繁体   English   中英

使用本机SQL查询时如何指定数据类型?

[英]How to specify data type when using native SQL query?

我正在使用休眠模式。 我已经编写了本机SQL查询,我想指定列之一的数据类型,如下所示。

sqlQuery.addScalar("NAME", STRING);

我正在查询5列, ID是其中的一列。 但是,如果我使用addScalar ,它不会返回所有列,而仅返回NAME 我将列类型指定为NAME列的原因是表中的CHAR(10) ,但我想要String类型。 如何指定数据类型并获取所有列?

为了避免使用ResultSetMetadata的开销,或者只是为了更明确地说明返回的内容,可以使用addScalar():

sess.createSQLQuery("SELECT * FROM CATS")
 .addScalar("ID", Hibernate.LONG)
 .addScalar("NAME", Hibernate.STRING)
 .addScalar("BIRTHDATE", Hibernate.DATE)

该查询指定:

the SQL query string

the columns and types to return

这将返回Object数组,但是现在将不使用ResultSetMetadata,而是从基础结果集中显式获取ID,NAME和BIRTHDATE列,分别为Long,String和Short。 这也意味着即使查询使用*,也仅返回这三列,并且返回的列可能多于列出的三列。

参考: http : //docs.jboss.org/hibernate/orm/3.3/reference/en/html/querysql.html#d0e13646

因此,在您的情况下,再添加4个addScalar()方法及其列名和数据类型。

这正在按预期工作。 它可以使用ResultSetMetaData并返回您从查询返回的所有值,也可以使用提供的类型输入并返回这些类型提供的列。

如果没有问题,请为剩余的四列添加类型。

     sqlQuery.addScalar("NAME", STRING).
     .addScalar("ID", Hibernate.LONG)
     .addScalar("COLUMN3", STRING)
     .addScalar("COLUMN4", STRING)
     .addScalar("COLUMN5", STRING);

根据实际的列名称及其数据类型更新列名称和数据类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM