2010-09-30 51 views
2

已經在Grails的服務類的事務上回滾標誌設置:的Grails:維持從服務事務上下文控制器

TransactionAspectSupport 
      .currentTransactionInfo() 
       .transactionStatus 
        .setRollbackOnly() 

發生的事情是,當我們回到控制器異常:

org.springframework.transaction.UnexpectedRollbackException 

我們必須捕捉到控制器(但不是在任何服務類)。這個代碼正在從之前的解決方案中重構,其中所有的邏輯直接在Controller中發生。

static transactional = true 

已設置的所有類:上會發生什麼車次此異常在方法返回時,因爲被拋出任何建議。猜測一些微妙的控制器經文服務魔術發生 - 有人知道嗎?現在只需將該異常捕獲爲解決方法,但是這會丟失將返回的TransactionStatus對象。

Grails的大加讚賞

回答

3

事務管理的任何想法是(我)很醜陋。 因此,我正在提供春季聲明式交易: Chapter 9. Transaction management 他們在Grails服務中完美工作。

返回到setRollbackOnly()。這種方法並不簡單......雖然在內部事務中設置了RollBack = true,但您觸發了將外部事務回滾到您所遇到的異常。

我有類似的問題,前一段時間 - 這裏是有用的信息,以找到最佳的解決方案相適應你:

+0

感謝。然而,我們沒有時間調查這些替代方案,而現在只是捕捉異常,因爲交易存在服務並進入控制器。但是,肯定地回答 – Alex 2010-10-05 08:46:36