2014-02-10 3 views
0

Я пишу EJB-CMT bean используя JPA. В моем методе EJB у меня есть некоторые упорные действия, и мне нужно вызвать «flush» после одного из действий «persist».EJB-CMT JPA флеш транзакция

Вот мой пример кода:

@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» выполняется в одной транзакции? Я знаю, что если я не использую «флеш», все коды выполняются в одной транзакции.

Большое спасибо за помощь.

ответ

1

уверены, вы можете аннотировать метод с @TransactionAttribute с value=REQUIRES_NEW и вашим метод будет выполнен в одной изолированной транзакции и ваш менеджер объект будет сбрасываться при возврате из метода проверки подробнее here

+0

Спасибо Камило ! –

Смежные вопросы