4

我从 typedQuery 对象得到 resultList 。我从该列表中取出第一个对象。

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

什么时候,我更新这个对象并调用entityManager.merge(loginAttempt);它更新成功。

但是当我要删除这个对象时,它会给我一个例外,即。java.lang.IllegalArgumentException: Removing a detached instance.

任何建议。谢谢 :)

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

4

2 回答 2

10

合并实际上是有效的,因为它的目的是从分离状态过渡到托管状态。另一方面,删除只能对托管实体起作用。

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

于 2012-10-17T09:51:08.710 回答
0

快速搜索显示您需要在同一事务中执行此操作。您不能合并然后删除。您需要在同一个事务中进行,或者将它们分开在两个事务中

于 2012-10-17T09:11:02.107 回答