2015-12-21 52 views
1

我有一個設置交易屬性的Grails中的抽象服務類。靜態事務屬性是否傳播給子類?

事情是這樣的:

abstract class AbstractService { 

    static transactional = false 
} 

class MyService extends AbstractService { 

    // methods 
} 

是在方法MyService事務也只是虛假通過擴展AbstractService

回答

0

總之是的,但只要你不定義

import grails.transaction.Transactional 

import org.springframework.transaction.interceptor.TransactionAspectSupport 


class TestingService extends TestService { 
    //DO NOT ENABLE THIS OTHERWISE IT IS TRANSACTIONAL 
    //static transactional = true 
    def doIt() { 
     def aa = TransactionAspectSupport?.currentTransactionInfo() 
     return aa 
    } 

    @Transactional 
    def doIt2() { 
     def aa = TransactionAspectSupport?.currentTransactionInfo() 
     return aa 
    } 


} 

所以,如果你超控器靜態交易則變得事務。如果您堅持使用擴展抽象類中的靜態聲明,現在即使您定義了@Transactional註釋。結果將爲空。對於下面的測試。

如果交易不支持AA將返回null,如果是你會看到類似PROPAGATION_REQUIRED,ISOLATION_DEFAULT

+0

我試着用'TransactionAspectSupport?.currentTransactionInfo()'來看看我是在一個事務中,但它只是總是返回空值。即使在'withTransaction'塊中。 – Akolopez