我有这样的情况:
@Transactional
@Override
public void register(String username, UserPasswordNew userPasswordNew, UserAccount userAccount) throws UserNameAlreadyExistsException {
.....
entityManager.merge(userAccountToSave);
}
我做了一些研究,但检查一下我是否理解得很好。我有entityManager
(交易范围)。方法寄存器是@Transactional
,因此这意味着此方法包含在代理中。何时创建持久化上下文?在entityManager.merge ()
的第一次调用期间?事务是在方法之后提交的,因为它包含在代理中。那么在提交后会删除持久化上下文吗?
答案 0 :(得分:1)
如果我错了,请纠正我,但是你正在使用事务范围的entitymanager,所以在每次调用entitymanager时它确保存在持久化上下文,这里entitymanager创建一个新的并使用它来合并 - 并且,如在事务范围内entitymanager,每次提交后都会删除持久化上下文。