【问题标题】:"Remove" operation on detached entities对分离实体的“删除”操作
【发布时间】:2012-01-19 01:25:47
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 您使用的是什么版本的hibernate,以及如何删除分离的实体,请发布您的代码。
  • 我正在使用 JSF ....没有与此问题相关的代码。
  • 这与 JSF 完全无关。这与 JPA 有关。

标签: java jpa entity


【解决方案1】:

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

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

我不确定上面的行,但你可以试试。

【讨论】:

  • yup....这个过程是正确的....也就是说,我们需要使其“托管”..然后才能删除。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-07
  • 2015-08-11
  • 1970-01-01
  • 2014-05-09
相关资源
最近更新 更多