Hibernate 一对多级联更新(更新,删除多方数据)的错误解决
2014-07-10 19:50
381 查看
我在处理数据库的级联关系时,老是碰到题目中的两个异常:
deleted object would be re-saved by cascade
A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance。
这两个问题,删除cascade这一项会解决一个问题但是也带来了另一个问题,删除cascade以后呢,就相反,总有问题。
而修改明细后保存报:
a different object
with the same identifier value was already associated with the session
而解决方法是:
1.在One方设置为cascade="all-delete-orphan" ,
2.修改保存时(同时修改了MANY方),一般都需要将数据库中的数据先getById取出,然后进行赋值。
3.其Set中的Many方不能通过setXXX的方式设置值。因为这样在后面merge的时候就不会有更新语句。需要通过将getById取出的Set进行clear(),然后将前台传入的Many数据一一通过getXXX().add()的方法加入。
4.,对实体进行MERGE,Session.merge()。这样Many方有修改或删除都可以正常进行。
deleted object would be re-saved by cascade
A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance。
这两个问题,删除cascade这一项会解决一个问题但是也带来了另一个问题,删除cascade以后呢,就相反,总有问题。
而修改明细后保存报:
a different object
with the same identifier value was already associated with the session
而解决方法是:
1.在One方设置为cascade="all-delete-orphan" ,
2.修改保存时(同时修改了MANY方),一般都需要将数据库中的数据先getById取出,然后进行赋值。
3.其Set中的Many方不能通过setXXX的方式设置值。因为这样在后面merge的时候就不会有更新语句。需要通过将getById取出的Set进行clear(),然后将前台传入的Many数据一一通过getXXX().add()的方法加入。
4.,对实体进行MERGE,Session.merge()。这样Many方有修改或删除都可以正常进行。
相关文章推荐
- Hibernate更新删除数据后,再查询数据依然存在的解决办法
- hibernate一对多,更新主表时删除旧的多方数据加入新的多方数据
- 关于Hibernate设置一对多关系时更新一方数据时多方外键丢失问题解决
- Hibernate入门07 - 更新,删除数据
- 错误14274:无法添加、更新或删除从msx服务器上发起的作业(或其步骤或调度)的解决方法
- CASCADE——SQL, sql server 2000 ,表间数据 ,级联更新删除
- linq to sql统一更新方法,直接返回更新的对象(解决更新后再刷新数据错误显示问题)
- 批量更新数据引起 DataGrid 的绘制错误及解决方法
- Hibernate入门07 - 更新,删除数据
- GridView连接SQL Server 2005实现增加、更新、删除按钮时遇到的两个错误及解决办法
- Hibernate级联删除的一个错误
- SQL2005错误:"已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行. "解决方法
- jdbc与hibernate结合修改子表数据(jdbc删除、hibernate更新/添加)
- 意外删除Oracle数据文件(dbf),恢复oralce库的解决办法--Oracle错误代码:ORA-01033
- SQL, sql server 2000 ,表间数据 ,级联更新删除
- 如果解决Sql Server 错误(error 14274: 无法添加、更新或删除从msx服务器上发起的作业.)
- SQL Server“错误14274: 无法添加、更新或删除从MSX服务器上发起的作业”的解决办法
- Hibernate 数据的保存,更新和删除
- 解决VS更新/增加服务引用出现“XML 文档中有错误。 读取 XML 数据时,超出最大名称表字符计数配额 (16384)”
- SQL Server“错误14274: 无法添加、更新或删除从MSX服务器上发起的作业”的解决办法