我在grails中有一个抽象服务类来设置事务属性。
这样的事情:
abstract class AbstractService {
static transactional = false
}
class MyService extends AbstractService {
// methods
}
通过扩展MyService
,AbstractService
中的方法是否也是错误的。
答案 0 :(得分: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注释。结果将为null。对于下面的测试。
如果不支持交易,aa将返回null,如果是,您将看到类似PROPAGATION_REQUIRED,ISOLATION_DEFAULT