我收到上述错误"org.hibernate.ObjectDeletedException:删除对象将通过级联(移除协会删除的对象)重新保存".有人可以帮助我可能是什么问题,应该解决什么?
谢谢.
Luc*_*cci 18
没有映射结束代码有点困难......这通常是因为您要删除与集合相关联的对象.
您必须从拥有集合中删除对象,然后删除对象
parentObject.collection.remove(objToDelete);
session.delete(objToDelete);
session.save(parentObject);
Run Code Online (Sandbox Code Playgroud)
但是你可以用这种方式使用deleteOrphan来映射集合来避免这种情况
class ParentObject {
@OneToMany(orphanRemoval=true)
private List<ChildObject> collection;
}
Run Code Online (Sandbox Code Playgroud)
和代码看起来像
parentObject.collection.remove(objToDelete);
session.save(parentObject);
Run Code Online (Sandbox Code Playgroud)
您不需要删除对象,因为在保存parentObject时Hibernate会自动删除它.
希望可以帮助
您已在会话中删除了实体(A),但它被另一个实体引用并使用Cascade注释进行了分配.该引用将导致实体(A)立即重新处理.由于这可能不是你想要的,hibernate抱怨.
解决方案是查找实体可通过的所有引用(包括集合),并将它们设置为null/从集合中删除实体.
你可以改变你的删除逻辑:制作一个删除孤儿的引用(如果只有一个),然后将其删除,如@bellabax所述.
| 归档时间: |
|
| 查看次数: |
30743 次 |
| 最近记录: |