我使用REQUIRE_NEW註釋了一個方法,我期望它在新事務中執行。以下是代碼:EJB事務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);
}
}
Howerver,當我把一個斷點在該行的創建方法調用後(其中doMoreStuff說)我的實體不會被保存在數據庫中。我錯過了什麼?我查了一下,EJBB是一個代理。
編輯:想通了,如果該方法是繼承,它不起作用。解決的辦法是改變EJBB的方法,如下:
public class EJBBImpl extends BaseEJB implements EJBB {
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void anotherNameForCreate(Entity entity) {
super.create(entity);
}
}
有誰知道爲什麼它時,覆蓋從另一個類的方法不起作用?