【问题标题】:Spring transaction and PersistenceContextSpring事务和PersistenceContext
【发布时间】:2015-02-21 21:54:38
【问题描述】:

我遇到了这样的情况:

@Transactional
@Override
public void register(String username, UserPasswordNew userPasswordNew, UserAccount userAccount) throws UserNameAlreadyExistsException {
    .....
    entityManager.merge(userAccountToSave);
}

我做了一些研究,但如果我理解得很好,请检查我。我有entityManager(交易范围)。方法寄存器是@Transactional,所以这意味着这个方法被包裹在代理中。何时创建持久性上下文?在entityManager.merge () 的第一次通话中??事务是在方法之后提交的,因为它包装在代理中。所以提交后持久化上下文被删除了?

【问题讨论】:

    标签: proxy transactions entitymanager


    【解决方案1】:

    如果我错了,请纠正我,但是您使用的是事务范围的实体管理器,因此在每次调用实体管理器期间,它确保存在持久性上下文,这里实体管理器创建一个新的并使用它来合并 - 并且,在事务范围内entitymanager,持久化上下文会在每次提交后被移除。

    【讨论】:

      猜你喜欢
      • 2018-05-23
      • 2015-01-31
      • 2016-07-18
      • 2011-06-13
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 2016-08-20
      • 1970-01-01
      相关资源
      最近更新 更多