【问题标题】:JPA: Deleting detached instanceJPA:删除分离的实例
【发布时间】:2012-10-07 11:55:06
【问题描述】:

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

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

当我更新这个对象并调用entityManager.merge(loginAttempt);它更新成功。

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

任何建议。谢谢:)

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 其实我只想删除。我只是提到了合并,因为我很困惑合并正在工作但删除不起作用......
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-12
      • 1970-01-01
      • 2013-06-06
      • 1970-01-01
      • 2013-10-29
      • 2015-08-10
      • 1970-01-01
      相关资源
      最近更新 更多