| « | June 2026 | » | | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | |
| 公告 |
| 暂无公告... |
| Blog信息 |
|
blog名称: 日志总数:4 评论数量:5 留言数量:0 访问次数:25320 建立时间:2010年7月14日 |

| |
|
不吐不快:Hibernate中的org.hibernate.ObjectDeletedException(deleted object would be re-saved by cascade (remove deleted object from associations)) 原创空间, 软件技术
neverback 发表于 2010/9/30 11:58:56 |
|
刚接触Hibernate没有多久,限于了解会用...
说下我遇到的情况,有存在关联关系的主从对象,主对象中存在子对象的Set,
主对象中子对象Set注解:
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="main",targetEntity= child.class) @BatchSize(size=5) @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
同理,子对象中注解:
@ManyToOne(cascade=CascadeType.PERSIST,fetch=FetchType.LAZY) @JoinColumn(name="m_id")
可以看出来我开启了
cascade=CascadeType.ALL
关于cascade注解:
all:所有情况下均进行关联操作
none:与上面相反
save-update:save/update/saveOrUpdate时候进行关联操作
delete:同上,执行delete时候。
我的错误出现在试图单独删除Set中某一个子数据时候,hibernate报错为
org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations)
作为初学者,google之,前三页都是类似的这个解决办法:
http://yelr-j.javaeye.com/blog/419609
没有尝试,总觉得有问题,首先去掉cascade关系,就无法进行级联操作。还有解决级联关系,即set主对象为null觉得更不可取。
事实上查看了一下文档,发现首先需要对子对象中的主对象里面的关联关系进行一下调整即可,类似
child.getParent().getChildSet().remove(child);
将子对象中关联的主对象里面记录的子对象的集合中去掉要删除的子对象(是不是有点绕口)...这样单独进行删除子对象操作时候就不会发生上面错误了.
不知道这算不算是解决了问题。 |
|
|
回复:不吐不快:Hibernate中的org.hibernate.ObjectDeletedException(deleted object would be re-saved by cascade (remove deleted object from associations)) 原创空间, 软件技术
dd(游客)发表评论于2011/5/17 16:53:13 |
|
|
回复:不吐不快:Hibernate中的org.hibernate.ObjectDeletedException(deleted object would be re-saved by cascade (remove deleted object from associations)) 原创空间, 软件技术
javaLover(游客)发表评论于2011/3/18 12:36:10 |
|
» 1 »
|