【发布时间】:2015-01-06 17:00:36
【问题描述】:
我正在使用 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)
【问题讨论】:
-
错误?想给人们一个线索,比如例外?
-
entity是类还是对象? -
EntityNotFoundException 对于另一个被删除的实体(在调用 em.find() 之前,仍在同一个事务中)。我说过如果需要我会详细说明:) Entity 是一个对象,entity.class 应该是 Entity.class)。
-
我理解正确吗?您在调用 em.merge 时收到 EntityNotFoundException?那会更奇怪。
标签: java hibernate jpa entitymanager hibernate-entitymanager