我从typedQuery对象获取resultList。 我从该列表中获取第一个对象。
例如。 LoginAttempt loginAttempt = loginAttempts.get(0);
当我更新此对象并致电entityManager.merge(loginAttempt);
时,它会成功更新。
但是当我要删除这个对象时,它给了我异常,即。 java.lang.IllegalArgumentException: Removing a detached instance.
任何建议。谢谢:))
实际上,我只想删除。我只是提到合并,因为我感到困惑,合并正在运行,但删除不起作用...
答案 0 :(得分:10)
合并实际上是有效的,因为它的目的是从分离状态转换为托管状态。另一方面,删除只能在托管实体上工作。
如果您有托管实体,则可以在其上调用em.remove(-)
如果您有一个分离的实体,则应该调用Object managed = em.merge(detached)
然后调用em.remove(managed)
。您必须在相同的事务边界内执行此操作。
答案 1 :(得分:0)
您需要在同一个交易中执行此操作的quick search reveals。您无法合并然后删除。您需要在同一个事务中执行此操作,或者在两个事务中将它们分开