对已分离的实体执行“删除”操作

时间:2011-12-13 05:23:16

标签: java jpa entity

我对分离实体的删除操作有疑问。

根据规范 “如果X是一个分离的实体,则remove操作将抛出IllegalArgumentException(或者事务提交将失败)。”

但是删除操作对于分离的实体可能有效。对于事务范围的持久性上下文,请考虑以下方案:

1)实体在事务T1中持久存储在数据库中。所以它变得脱节了。 2)在事务T2中对该分离的实体进行删除调用。

因为实体存在于数据库中,所以remove调用应该是有效的,并且应该由于事务T2而从数据库中删除实体。但是根据规范,应该通过删除或事务提交抛出异常应该失败。

我在这里遗漏了什么吗?是什么原因?

1 个答案:

答案 0 :(得分:4)

detached entitiesnon managed entities,您尝试删除非托管实体,如果要删除它,则必须在managed state中进行删除。 或另一种方法是找出分离实体的引用并尝试删除。

getEntityManager().getReference("detached");
remove("reference");

我不确定上述内容,但您可以尝试一下。