簡體   English   中英

異常后未持久保存JPA實體

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM