无状态EJB如何回滚JPA事务
例如:无状态EJB如何回滚JPA事务,jpa,ejb,java-ee-7,stateless-session,Jpa,Ejb,Java Ee 7,Stateless Session,例如: @Stateless public class EntityRepositry{ @Inject EntityManager em; public void create(Entity e){ // op1 success // op2 failed } } 由于无状态EJB在默认情况下是事务性的,我可以理解如果抛出系统异常(如OptimisticLockedException),事务将如何回滚?如何隐式调用em.ge
@Stateless
public class EntityRepositry{
@Inject
EntityManager em;
public void create(Entity e){
// op1 success
// op2 failed
}
}
由于无状态EJB在默认情况下是事务性的,我可以理解如果抛出系统异常(如OptimisticLockedException),事务将如何回滚?如何隐式调用em.getTransaction().rollback
提前感谢。EntityManager被注入了
@PeristenceContext
注释(或者您可能有CDI制作人?)
如果持久化单元被声明为使用JTA事务
<persistence-unit name="myname" transaction-type="JTA">
然后EJB事务绑定到JPA事务,反之亦然
JPA异常回滚整个事务,但请记住,任何RuntimeException都会回滚事务,而checked exception则不会
因此,如果您使用JTA事务管理,您不必手动回滚事务,只需抛出或捕获正确的异常(捕获RuntimeException不会阻止事务回滚,但允许您对其进行管理)。这是否回答了您的问题?