【发布时间】:2023-03-23 19:39:01
【问题描述】:
现在我一直想知道为什么在使用 JPA 时,我必须像这样编写删除方法:
@Transactional
public void delete(Account account)
{
if (entityManager.contains(account))
{
entityManager.remove(account);
}
else
{
entityManager.remove(entityManager.merge(account));
}
}
也许不需要包含,因为事务以这种方法开始和结束,但我仍然想知道为什么 remove 不能只采用非托管对象。是否因为需要对其进行管理才能知道该对象的 id 是什么?任何其他见解都会很高兴听到。我只是想了解 JPA 删除的方式和原因。
【问题讨论】:
标签: jpa merge jpa-2.0 entitymanager