我正在使用JPA编写EJB-CMT bean。在我的EJB方法中,我有一些持久的动作,我需要在“持续”动作之后调用'flush'。
以下是我的示例代码:
@Stateless
@LocalBean
@TransactionManagement(TransactionManagementType.CONTAINER)
public class MyEjb {
@PersistenceContext(unitName = "MyPU")
EntityManager em;
public void addSome() {
User u = //;
em.persist(u);
em.flush(); // ----------- CALL FLUSH HERE
UserGroup g1;
em.persist(g1); // --- Add another
UserGroup g2;
em.persist(g2); // -- Add another
}
}
我的问题是:我可以在一次交易中执行“addSome”方法中的所有代码吗?我知道如果我不使用'flush',所有代码都会在一次交易中执行。
非常感谢你的帮助。
答案 0 :(得分:1)
当然,您可以使用value=REQUIRES_NEW
使用{{1}}注释您的方法,并且您的方法将在一个单独的事务中执行,并且当您从方法返回时,您的实体管理器将被刷新,请查看更多信息@TransactionAttribute