我对分离实体的删除操作有疑问。
根据规范 “如果X是一个分离实体,则删除操作将抛出IllegalArgumentException(或者事务提交将失败)。”
但是删除操作对于分离的实体可能是有效的。对于事务范围的持久性上下文,请考虑以下场景:
1) 实体在事务 T1 中持久保存在数据库中。所以它变得分离。 2) 在事务 T2 中对该分离实体进行删除调用。
由于该实体存在于数据库中,因此删除调用应该有效,并且该实体应该作为事务 T2 的结果从数据库中删除。但根据规范,删除应该抛出异常,否则事务提交应该失败。
我在这里遗漏了什么吗?原因是什么?
最佳答案
分离实体
是一个非托管实体
,并且您正在尝试删除非托管实体,如果您想删除它,那么您必须将其放入托管状态
。
或者另一种方法是找出分离实体的引用并尝试删除。
getEntityManager().getReference("detached");
remove("reference");
我不确定上面的行,但你可以尝试一下。
关于java - "Remove"对分离实体的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8484694/