又ok了。
原因:
hibernate 中createQuery与createSQLQuery两者区别是:
前者用的hql语句进行查询,后者可以用sql语句查询
前者以hibernate生成的Bean为对象装入list返回
后者则是以对象数组进行存储(object数组)
所以使用createSQLQuery有时候也想以hibernate生成的Bean为对象装入list返回,就不是很方便。
解决方法:
1.for循环把object数组转换成对应对象。(不推荐,要通过数据库查询出来的位置定位)
2. 用addEntity(xxx.class) (如上,推荐)
3.用setResultTransformer
setResultTransformer与addEntity的区别是:
一个区别是前者支持查任意的列,后者必须用select * from users的形式或select {a.*},{b.*} from a,b where ...这种形式
如ateSQLQuery("select name ,age,birthday from Students")
或setResultTransformer(new AliasToBeanResultTransformer (Students.class))
上面的查询将会返回Students的列表,它将被实例化并且将name和birthday的值注射入对应的属性或者字段。
但必须注意,对每一个列都必须addScalar("列名") 。
转载于:
本文发布于:2024-01-31 22:55:48,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170671295131982.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |