我正在使用EJB 3.1,我有一个无状态会话Bean,我正在注入一个EntityManager。 EJB的一个方法调用entityManager.setFlushMode(FlushModeType.COMMIT)。
两个问题:
1)我认为这会影响属于此事务的所有EJB。因此,例如,如果此SSB在另一个使用REQUIRED事务属性的EJB上调用另一个方法,并且EJB也注入了EntityManager,那么该方法使用的entityManager也将处于COMMIT刷新模式。这是真的还是你必须在被调用的方法中明确设置刷新模式,即使它在同一个TX中?
2)在实体管理器上设置flushMode会影响注入其他EJB但在不同事务中使用的相同PU的任何其他实体管理器吗?我不会假设。
日Thnx。
答案 0 :(得分:3)
您的假设是正确的。是的,注入的EntityManager上的setFlushMode会影响同一事务中PU的所有EM。不,它不会影响其他交易中的EM。请参阅此答案:EJB 3.1 Transaction, EntityManager