我用 REQUIRE_NEW 注释了一个方法,我希望它在新事务中执行。以下是代码:
public class EJBAImpl implements EJBA {
@EJB
private EJBB ejbb;
public void someMethod(entity){
ejbb.create(entity);
//doMoreStuff
}
}
public class BaseEJB {
public void create(Entity entity) {
//saveHere
}
}
public class EJBBImpl extends BaseEJB implements EJBB {
@Override
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void create(Entity entity) {
super.create(entity);
}
}
但是,当我在创建方法调用之后的行中放置一个断点(其中说 doMoreStuff)时,我的实体没有保存在数据库中。我错过了什么?我查了一下,EJBB 是一个代理。
编辑:想通了,如果方法是继承的,它就不起作用。解决方法是在EJBB中改变方法,如下:
public class EJBBImpl extends BaseEJB implements EJBB {
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void anotherNameForCreate(Entity entity) {
super.create(entity);
}
}
有谁知道为什么在覆盖另一个类的方法时它不起作用?