我正在使用hibernate createSQLQuery
,但它只返回第一个char。
tableName = 'select code, name from airports where excludeFromSearch = 0 order by name';
s.createSQLQuery(tableName).list();
我正在使用:
快照:
我用Google搜索了stackoverflow,forum.hibernate,atlassian
UPDATE:我还检查了所有的hibernate查询日志,甚至mysql查询日志都是一样的。
`code char(3)` // <strike>might</strike> must cause problem as in screen shot
name varchar(100)
答案 0 :(得分:6)
您是否尝试过将Scalar设置为您的请求?
StringType stringTypeInstance = StringType.class.newInstance();
String tableName = 'select code, name from airports where excludeFromSearch = 0 order by name';
List<Object[]> result = s.createSQLQuery(tableName)
.addScalar("code",stringTypeInstance)
.addScalar("name",stringTypeInstance )
.list();
答案 1 :(得分:2)
首先,尝试在数据库上触发由hibernate生成的查询,然后尝试匹配结果。如果对数据库的查询也返回相同的结果,那么检查你的表定义,代码实际上是字符串或其他东西。
编写SQL查询查询的更好选择是在hbm文件中编写它们,然后在其中定义返回属性,这将对你有所帮助,因为那时你将能够将输出转换为期望的对象,而不是对象的数组。
答案 2 :(得分:0)
您可以在SQL语句中进行简单转换。
select convert(varchar, Name) from Person
当char自动连接到Character列值时,旧版本的Hibernate中存在问题。 https://hibernate.atlassian.net/browse/HHH-2304