JPA:删除分离的实例

时间:2012-10-17 09:02:38

标签: spring hibernate jpa jpa-2.0 hibernate-annotations

我从typedQuery对象获取resultList。 我从该列表中获取第一个对象。

例如。 LoginAttempt loginAttempt = loginAttempts.get(0);

当我更新此对象并致电entityManager.merge(loginAttempt);时,它会成功更新。

但是当我要删除这个对象时,它给了我异常,即。 java.lang.IllegalArgumentException: Removing a detached instance.

任何建议。谢谢:))

实际上,我只想删除。我只是提到合并,因为我感到困惑,合并正在运行,但删除不起作用...

2 个答案:

答案 0 :(得分:10)

合并实际上是有效的,因为它的目的是从分离状态转换为托管状态。另一方面,删除只能在托管实体上工作。

如果您有托管实体,则可以在其上调用em.remove(-) 如果您有一个分离的实体,则应该调用Object managed = em.merge(detached)然后调用em.remove(managed)。您必须在相同的事务边界内执行此操作。

答案 1 :(得分:0)

您需要在同一个交易中执行此操作的quick search reveals。您无法合并然后删除。您需要在同一个事务中执行此操作,或者在两个事务中将它们分开