我正在使用休眠。我已经编写了本机 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
这将返回对象数组,但现在它不会使用 ResultSetMetadata,而是会从底层结果集中显式获取 ID、NAME 和 BIRTHDATE 列,分别作为 Long、String 和 Short。这也意味着仅返回这三列,即使查询使用 * 并且可能返回多于列出的三列。
Ref: http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querysql.html#d0e13646 http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querysql.html#d0e13646
所以,根据你的情况再添加 4 个addScalar()
方法,及其列名称和数据类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)