(J2EE学习笔记)解决Hibernate删除异常:deleted object would be re-saved by cascade
时间: 2024-02-23 07:59:09 浏览: 121
这个异常通常出现在使用Hibernate进行删除操作时,表示对象在被删除前会被级联保存。这通常是由于对象关系映射中设置了级联保存导致的。
解决方法有两种:
1.取消级联保存:在对象关系映射中取消级联保存,这样对象在被删除时就不会被级联保存了。
2.手动删除级联保存的对象:在删除对象时手动删除级联保存的对象,这样对象在被删除时就不会被级联保存了。
具体实现可以参考以下代码:
1.取消级联保存:
```java
@OneToMany(mappedBy = "parent", cascade = CascadeType.REMOVE)
private List<Child> children;
```
把cascade属性改为CascadeType.REMOVE:
```java
@OneToMany(mappedBy = "parent", cascade = CascadeType.REMOVE)
private List<Child> children;
```
2.手动删除级联保存的对象:
```java
public void delete(Parent parent) {
List<Child> children = parent.getChildren();
for (Child child : children) {
session.delete(child);
}
session.delete(parent);
}
```
在删除parent对象前先手动删除它的children列表中的所有对象,这样就避免了级联保存和删除异常的出现。
阅读全文