使用hibernate2的时候出现session中对象重复错误
来源:互联网 发布:javascript启示录 pdf 编辑:程序博客网 时间:2024/06/16 05:17
a different object with the same identifier value was already associated with the session
这个已经是hibernate的经典错误啦..
在hibernate3.0之后版本里,这个错误很好解决,session.merge(object)就可以了..
但是我用的却是老掉牙的hibernate2,
没有merge方法,所以只能用别的办法来解决了.
代码里.有两个数据实体,
1.工具(Tool),配置文件中:inverse=true,lazy=true
2 合同(Contract);配置文件中:inverse=false,lazy=true
对应关系为多对多的关系.
引发错误的相关代码片段如下:
Os4Contract contract = (Os4Contract) session.get(Os4Contract.class, contractid); // 总共移除合同的代维工具数量 int removeNum = 0;// 合同原来拥有的"已添加工具数量" int oldamount = contract.getTools().size(); for (int i = 0; i < tools.size(); i++) { tool = (Os4Tool) tools.get(i); tool.getContracts().remove(contract); contract.getTools().remove(tool); /* 1.session.update(tool); 1.session.saveOrUpdate(tool); 2.session.evict(tool); 2.session.update(tool); 3.session.clear();//Found two representations of same collection 3.session.update(tool); 4.session.refresh(tool); 4.session.update(tool); */
其中,1,2,4 方法都试过,在update的时候就会提示a different object with the same identifier value was already associated with the session
第3个方法则是Found two representations of same collection 错误.
上面代码的意图是,将工具从合同中移除, 也就是把工具和合同的映射关系表相关记录给删除掉即可.
因为工具的配置文件中,inverse=true, 也就是说.这个关系映射表由合同来管理,
也就是说,如果要解除contract与tool之间的关系,保存tool是不能达到效果的,
必须保存contract,然后contract才会去维护关系映射表,
所以,就把session.update(tool);这句去掉了.而且这里tool没有做修改,完全没必要update一次,浪费性能.
呵呵,至此,感觉这个问题我其实并没有解决..我只是"避免"了而已..
如果真的有个场景,非要update的话.也只能"用一种蠢方法,先删后加,并且放到两个事务中了"
- 使用hibernate2的时候出现session中对象重复错误
- 使用DataKeys的时候,出现 ArgumentOutOfRangeException错误
- 使用response Redirect时候出现的错误
- ashx页面中 Session值出现“未将对象引用设置到对象的实例”错误
- ashx页面中 Session值出现“未将对象引用设置到对象的实例”错误
- ashx页面中 Session值出现“未将对象引用设置到对象的实例”错误
- 使用VS2003创建WEB程序的时候出现"AutoMation服务器不能创建对象"错误
- java中session出现的错误
- 关于在Opencv中使用Release、imread时候出现,错误
- 使用PEAR的Services_Twitter包的时候出现错误提示
- 使用Yomail的时候出现的错误解决方案
- 使用ftream类的时候出现的错误
- 使用Winpcap示例程序的时候,会出现很多错误。
- 使用putty进行vim编辑的时候,小键盘出现错误
- 使用ant debug编译的时候出现如下错误
- python使用pip安装模块的时候出现ascii错误
- 使用谷歌官annotation包的时候出现错误
- 使用svm 对参数寻优的时候出现错误
- php截取中文字符串解决乱码问题
- Xcode4.4免证书调试
- jquery 实现类似139、163邮箱那样的多选项卡窗口浏览
- android asset studio
- webwork+cas认证在表单提交后乱码问题解决心得
- 使用hibernate2的时候出现session中对象重复错误
- js动态给对象onclick事件赋值,动态传参数
- URL特殊字符需转义
- Hibernate2查询视图时,数据库返回多条纪录,封装后的对象却都是一样的问题
- 利用java反射机制编写通用的toString 方法
- 关于Xwork异常 : Unable to instantiate Action
- struct task_struct 结构分析 \linux-1.0\linux\include\linux\sched.h
- Hibernate的session.flush做了什么呢?
- 关于jsp:include 标签指向的页面无法显示的问题