今天遇到个很郁闷的事情,通过hibernate的createSQLQuery来查询某几个字段,如id,number,name等,结果发现一个很奇怪的现象,id字段只拿到一个字符,而其他字段正常。一下子纳闷了,不知道啥问题。后面想想id在数据库中是CHAR(32)类型的,其他字段是VARCHAR则正常,会不会跟这个有关系?
好在找到资料,确实如此,hibernate将char自动映射成character!
可以通过addScalar来自定义返回类型来解决,不废话,如下所示:
Query query = session.createSQLQuery(queryString)
.addScalar("id", Hibernate.STRING)
.addScalar("number", Hibernate.STRING)
.addScalar("subject", Hibernate.STRING)
.addScalar("status", Hibernate.STRING)
.addScalar("article_or_point", Hibernate.STRING);