`
snow_wujing
  • 浏览: 391 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Hibernate查询视图时,数据库返回多条纪录,封装后的对象却都是一样的问题

 
阅读更多
Hibernate2查询视图时,数据库返回多条纪录,封装后的对象却都是一样的问题


这是什么原因呢?
其实很简单,因为hibernate配置文件上,我这个实体的主键是ID字段,而我的视图,ID并不能作为唯一标识,所以,当hibernate查数据库的第一条纪录的时候,就生成了一个
Os4VDemandCert对象,放在持久对象池里,
当再去查第二条纪录的时候,hibernate发现第二条纪录的ID和持久池里那第一条纪录的ID是一样的,所以就不重复生成新的对象了,直接拿持久池里原有的那个对象放到list中去,第三条纪录也一样.
这样,就导致list中的3个对象都是一样的结果.
这个跟Override了对象的hashCode和equals方法没有关系.

要解决上面的问题.可以用JDBC,或者在Hibernate上给对象配置联合主键来避免..
在以后准备写一个VO来映射数据库中的视图的时候,先注意下一视图是不是有唯一字段,如果有,就拿能唯一标识一条纪录的那个字段来作为主键,或许用联合主键.


原文转自博客:http://t8500071.iteye.com/blog/344193,未经博主允许,请谅解!
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics