我正在使用 JPA(使用 Hibernate 作为 JPA 提供程序)。我有一个删除实体的操作,似乎如果我分离实体并立即合并它会引发异常,即
em.find(entity.class, entitiy.getId())
em.detach(entity)
em.merge(entity)
会导致错误,而只是
em.find(entity.class, entitiy.getId())
会顺利通过。关于分离和合并,我有什么遗漏吗?我没有对实体本身做任何事情,它没有改变,所以合并不应该改变任何东西。
如果需要,我可以详细说明我的具体情况。
编辑
正如@rmertins 指出的那样,我应该使用合并的返回值,因为合并返回合并实体,而我们用作参数的实体保持分离。这有效:
em.find(entity.class, entitiy.getId())
em.detach(entity)
entity = em.merge(entity)