2014-10-16 31 views
0

我知道這聽起來很奇怪,但推理很簡單。 我有一個使用Spring + Hibernate開發的服務器端應用程序。Spring jpa在回滾期間保存數據

我有一個自定義的servlet:

@Transactional 
@Component 
public class ReceivingSms implements HttpRequestHandler { 
... 
... 
... 
@Override 
    public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    ....reading data from parameters and store into the db.... 
    entityManager.persist(someEntities); 

    //at some point I found that there is some error and I've to rollback the entire transaction 
    if(error){ 
     //HERE I WANT TO SAVE A LOG ON DB 
     throw new RuntimeException("Error"); 
    } 
} 

原因是這樣的:

  • 我讀的是到達這個servlet
  • 我存儲在數據庫的一些數據得出的參數從這些參數
  • 在某些時候我知道有一個錯誤,我無法完成該過程。所以我拋出一個RuntimeException在返回之前回滾整個事務
  • ,我想在db中保存一個特定的實體(一種日誌)。 Howewer另外,如果我嘗試,這個堅持卷從RuntimeException的

回從這裏我的問題:有是存儲在數據庫中的實體和回滾事務的休息方式嗎?

感謝

回答

2

調用另一個交易服務,其方法是標註了

@Transactional(propagation = Propagation.REQUIRES_NEW) 

保存日誌條目。