我試圖使用Ebean和Play Framework 2.2.2的交易。 由於@Transactional註釋在我的服務的方法中不起作用(我想他們沒有像Ebean文檔中的解釋那樣得到增強),我試圖手動管理事務。Ebean與Play Framework的交易傳播2.2.2
我有這樣的代碼:
public void method1() {
Ebean.beginTransaction();
try {
// Do something
// Do something else
method2();
Ebean.commitTransaction();
}
finally {
Ebean.endTransaction();
}
}
public void method2() {
Ebean.beginTransaction();
try {
doSomething();
Ebean.commitTransaction();
}
finally {
Ebean.endTransaction();
}
}
有了這個代碼,我有以下錯誤,當我在method2
開始交易:
javax.persistence.PersistenceException: The existing transaction is still active?
如何定義事務的傳播當手動聲明它們時,就像我對@Transactional所做的一樣? 我的method2
可以在method1
和其他地方調用,所以我不能刪除它中的交易...
這不會改變任何東西,因爲Ebean一次管理一個事務(請參閱Ebean.currentTransaction())。所以即使我使用了一個變量,交易也會被註冊。我試圖找出是否可以使用REQUIRED,REQUIRES_NEW,MANDATORY ... – c4k