最近的开发一直在持久层周围,虽然做hibernate也有一段时间了,但是随着数据库表的增加,遇到了一些以前没有碰到过的问题。其中有一个问题就是对集合的共享参照问题(found shared references to a collection)具体是这样的:
数据库表的关系如下:
关系是这样的ALARMINFO表通过交叉表ALARMAUDIT和AUDITINFO建立多对多关系,ALARMINFO自身是一对多的关系,ALARMINFO表和ALARMCOMPRESS表是多对一的关系。
在这里抛开ALARMCOMPRESS表不讨论,对象之间的关系是双向关联,目标是这样的:生成一个新的ALARMINFO对象alarmInfo,该对象子集合alarmInfos已经获得,将其赋值给该对象alarmInfo,而该对象的auditInfos的赋值是这样的:将alarmInfos的其中一个元素对应的多个auditInfos赋值给auditInfos。
那这样的话最终save对象alarmInfo就会产生共享参照,即alarmInfo对auditInfos的参照,alarmInfo的子集合alarmInfos中的一个元素对auditInfos的参照。
有什么方法能够在加载alarmInfos的其中一个元素的auditInfos集合,并赋值给alarmInfo后,使得该集合再次恢复到未加载前的lazy状态呢,这样就可以避免对集合的共享参照问题。或者还有其他的方法。
java 代码
- public class AlarmInfo{
- private Set alarmInfos;
- private Set auditInfos;
- private AlarmCompress alarmCompress;
- }
-
- public class AuditInfo{
- private Set alarmInfos;
- }
-
- public class AlarmCompress{
- private Set alarmInfos;
- }
分享到:
相关推荐
Hibernate帮助文档集合Hibernate帮助文档集合Hibernate帮助文档集合Hibernate帮助文档集合Hibernate帮助文档集合Hibernate帮助文档集合Hibernate帮助文档集合Hibernate帮助文档集合Hibernate帮助文档集合Hibernate...
hibernate常用方法集合
hibernate中的集合映射,各种集合类型的使用方法及适用场景
hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate-search-analyzers-4.1.1.Final-sources.jar hibernate-search-engine-4.1.1.Final-sources.jar hibernate-search-orm-4.1.1.Final-sources.jar hibernate-...
Hiberhate的增、删、改、查、动态、查询、分页.doc Hibernate的对应关系.doc Hibernate具体方法的实现.doc
hibernate 双向 多对对,一对多,一对一 映射的 集合 hibernate所有映射的集合 非常有用
NULL 博文链接:https://paladin1988.iteye.com/blog/1639102
包含hibernate-valdator等用于数据校验所需要的基本jar包。
Hibernate集合属性的延迟加载.doc
Hibernate映射集合属性List,用于映射集合属性 List Hibernate 自动生成表 不需sql
hibernate中文API,hibernate中文参考手册,hibernate API
Hibernate面试题部分汇总集合Hibernate面试题部分汇总集合
NULL 博文链接:https://lijunabc.iteye.com/blog/443381
hibernate集合的映射 集合的映射 set list array map
6.2.4. 值集合于多对多关联(Collections of values and many-to-many associations) 6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合...
组件的属性可以是任意一种Hibernate类型(包括集合, 多对多关联, 以及其它组件等等)。嵌套组件不应该被当作一种特殊的应用(Nested components should not be considered an exotic usage)。 Hibernate倾向于支持...
该资料包括了对java,hibernate的集合属性的操作的课件与源码。
hibernate jar包集合,有要用的jar包,里面大概都有了
hibernate_中文乱码hibernate_中文乱码hibernate_中文乱码hibernate_中文乱码hibernate_中文乱码hibernate_中文乱码
采用Spring+Hibernate+Struts架构,实现资源共享,用户可以注册登录,上传资源,下载资源,评论资源,并且通过别人下载自己上传的资源赚取相对应的资源分数等功能