[英]JPA Entity is not being persisted after exception
我遇到以下問題:
我有2節課(A和B)。 類A有一個用@Transaction(noRollBackFor = ExceptionB.class)
)注釋的方法(method1),它從類B調用@Transaction(noRollBackFor = ExceptionB.class)
是未經檢查的RunTimeException。
public class A {
...
@Resource
private B b;
@Transaction(noRollBackFor = ExceptionB.class)
public void method1() {
try {
b.method2();
} catch (ExceptionB e) {
// Change objects annotated with @Entity (must be persisted)
throw e;
}
}
}
@Transaction
public class B {
...
public void method2() {
...
throw new ExceptionB();
}
}
但是,當類B引發異常時,Spring Interceptor會獲取異常並使用類B事務注釋規則(不具有noRollBackFor規則)並執行事務回滾。 這樣,方法1中所做的所有更改都不會保留。 我應該更改為未發生回滾?
先感謝您。
好吧,我已經解決了我的問題。 關鍵是類B由@Transaction注釋,因此對於每個稱為(例如method2)的公共方法,將創建一個沒有noRollBack屬性的新事務。 以這種方式,對於我來說,解決方案是從類中刪除@Transaction注釋,並將其僅添加到需要新事務的方法中,即method2沒有注釋。
就這樣!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.