EJB-CMT JPA刷新事务

时间:2014-02-10 15:59:47

标签: java jpa transactions ejb

我正在使用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',所有代码都会在一次交易中执行。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

当然,您可以使用value=REQUIRES_NEW使用{{1}}注释您的方法,并且您的方法将在一个单独的事务中执行,并且当您从方法返回时,您的实体管理器将被刷新,请查看更多信息@TransactionAttribute