一段时间以来,我一直想知道为什么在使用 JPA 时,我必须像这样编写删除方法:
@Transactional
public void delete(Account account)
{
if (entityManager.contains(account))
{
entityManager.remove(account);
}
else
{
entityManager.remove(entityManager.merge(account));
}
}
由于事务以这种方法开始和结束,因此可能不需要包含,但我仍然想知道为什么 remove 不能只采用非托管对象。是否因为需要对其进行管理才能知道该对象的 id 是什么?任何其他见解都会很高兴听到。我只是想了解 JPA 删除的方式和原因。