Hibernate2查询视图时,数据库返回多条纪录,封装后的对象却都是一样的问题
这是什么原因呢?
其实很简单,因为hibernate配置文件上,我这个实体的主键是ID字段,而我的视图,ID并不能作为唯一标识,所以,当hibernate查数据库的第一条纪录的时候,就生成了一个
Os4VDemandCert对象,放在持久对象池里,
当再去查第二条纪录的时候,hibernate发现第二条纪录的ID和持久池里那第一条纪录的ID是一样的,所以就不重复生成新的对象了,直接拿持久池里原有的那个对象放到list中去,第三条纪录也一样.
这样,就导致list中的3个对象都是一样的结果.
这个跟Override了对象的hashCode和equals方法没有关系.
要解决上面的问题.可以用JDBC,或者在Hibernate上给对象配置联合主键来避免..
在以后准备写一个VO来映射数据库中的视图的时候,先注意下一视图是不是有唯一字段,如果有,就拿能唯一标识一条纪录的那个字段来作为主键,或许用联合主键.
原文转自博客:http://t8500071.iteye.com/blog/344193,未经博主允许,请谅解!
分享到:
相关推荐
使用本地sql语句查询后,无需再使用Object对查询结果进行强制转换,而是直接将查询结果放到实体Bean里了。 PS: 其实只有一版,这里只所以叫最终版是因为该附件我上传了好几天传不上去,到最后报告说‘资源已经存在...
北大青鸟ACCP6.0Hibernate影院信息查询系统数据库
Hibernate的视图功能 网上找的 , 自己实验过,能用
//该方法会立即加载/获取数据(只要调用该方法就会立即向数据库发出查询语句),该方法只在内部缓存查找数据,如果内部缓存中没有数据就直接去数据库查询,当数据库中没有要查询的数据时返回null (6).load(Class ...
hibernate同时配置多个数据库连接 可以同时连接不同IP的不同数据库
hibernate分页查询 数据库连接,不错的分析,可以尝试下载易用。。
在hibernate中配置多数据库,并自由切换
Hibernate与JDBC对于数据库的性能操作对比事例,配置,更多信息资源
hibernate将本地SQL查询结果封装成对象(最终).zip
hibernate将本地SQL查询结果封装成对象。如进行复杂的统计等本地sql语句查询后,直接放到对象里了,而不会再使用Object进行强转
基于hibernate映射文件生成数据库的案例
对hibernate的数据库操作封装: 1.分页查询 2.保存对象 3.保存对象组 4. 更新对象 5.更新对象组 6.保存或更新对象 7.保存或更新对象组 8. 删除对象 9. 删除对象组 10.删除对象(此类的所有对象) 11.删除(HQL) 12....
Hibernate 访问 多个数据库
hibernate支持的所有数据库方言。用起来很方便。
hibernate映射的创建数据库连接时的配置。教你怎么写那个配置。
Hibernate配置文件中配置各种数据库的driver、URL
Hibernate多数据库支持解决方案 一、 去掉数据库级的外键关联 二、 如何动态加载.hbm.xml文件 三、 配置文件的加载 四、 大字段处理 五、 hibernate主键生成器(数值型主键操作方法) 六、 Oracle 转换 SQL Server ...
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库 Hibernate最初级的操作,使用SchemaExport创建数据表 本资源自带...
hibernate自动生成数据库文件.rar hibernate自动生成数据库文件.rar hibernate自动生成数据库文件.rar 不建议下载 某同学自己录的视屏
达梦数据库各版本的hibernate方言包,包含版本 DmDialect-for-hibernate2.0、DmDialect-for-hibernate2.1、DmDialect-for-hibernate3.0、DmDialect-for-hibernate3.1、DmDialect-for-hibernate3.6、DmDialect-for-...