2011-12-13 37 views
0

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

根据规范 “如果X是分离实体,则删除操作将抛出IllegalArgumentException异常(否则事务提交将失败)。”

但是,删除操作可以对分离的实体有效。考虑交易范围持久性上下文的以下情况:

1)实体在事务T1中的数据库中持久化。所以它变得分离。 2)在事务T2中为这个分离的实体进行移除调用。

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

我在这里错过了什么吗?是什么原因?

+0

你正在使用什么版本的hibernate,以及如何删除detachable实体,请发布你的代码。 – subodh

+0

我正在使用JSF ....没有与此问题相关的代码。 – Shemil

+0

这与JSF无关。这与JPA有关。 – BalusC

回答

4

detached entitiesnon managed entities,并且您试图删除非托管实体,如果要删除它,则必须将其设置为managed state。 或另一种方法是找出分离实体的引用并尝试删除。

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

我不确定上述线路,但您可以尝试。

+0

是....这个程序是正确的....也就是说,我们需要使它“管理”..然后它是可能的删除。 – Shemil