今天遇到个很郁闷的事情,通过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);
本文描述了一个使用Hibernate的createSQLQuery方法查询特定字段时遇到的问题,即CHAR(32)类型的id字段返回结果异常,仅包含一个字符。通过研究发现,这是由于Hibernate自动将char类型映射为character类型导致的,并提供了通过addScalar方法自定义返回类型来解决该问题的方法。
191

被折叠的 条评论
为什么被折叠?



