@Stateless @LocalBean
public class MySLSB {
@Resource
SessionContext ctx;
@PersistenceContext(unitName = "myPU")
EntityManager em;
public void T1() {
em.persist(new MyEntity(1L)); //T1 created!
/* wrong call to plain java object
T2();
*/
//corrected by lookup its business object first
ctx.getBusinessObject(MySLSB.class).T2();
ctx.setRollbackOnly();
}
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void T2() {
em.persist(new MyEntity(2L)); //T2 created!
}
}
客户端调用T1(),在第一T2作为一种新的交易应该被提交, 但T1将被回滚。EJB CMT TransactionAttributeType.REQUIRES_NEW不起作用
预期结果:
T1:插入myEntity所组ID = 1; T2:insert into myentity set id = 2;
T2:commit;
T1:回滚;
- >在数据库中创建id = 2的行。
实际结果:
insert into myentity set id = 1;
insert into myentity set id = 2;
rollback;
- >在数据库中没有创建任何内容。
什么问题?非常感谢!