注释@Transactional在Grails中不起作用

时间:2018-10-25 13:10:28

标签: grails transactional

其中包含一个Grails 2.5.6域类

class Mapping {
    String xKey
    // other keys, constraints and methods...
}

和一个Grails服务类,其中包含

import grails.transaction.Transactional

@Transactional
class MappingService {

    def byXKey(String xKey) {
        Mapping.findByXKey(xKey)
    }
}

呼叫byXKey会导致

java.lang.NullPointerException at
org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130) at
org.codehaus.groovy.grails.orm.support.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:87) at
MappingService.byXKey(MappingService.groovy) at 
...

在到达服务类中的代码之前。 在另一项服务中执行Mapping.findByXKey(xKey)会导致相同的异常。

这里可能出什么问题了?

边注:如果我尝试使用

import org.springframework.transaction.annotation.Transactional

代替建议的in another context,结果是

org.springframework.dao.DataAccessResourceFailureException: Could not obtain current Hibernate Session; nested exception is 
org.hibernate.HibernateException: No Session found for current thread at 
org.codehaus.groovy.grails.orm.hibernate.GrailsHibernateTemplate.getSession(GrailsHibernateTemplate.java:219) at 
org.codehaus.groovy.grails.orm.hibernate.GrailsHibernateTemplate.doExecute(GrailsHibernateTemplate.java:175) at 
org.codehaus.groovy.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:132) at 
org.codehaus.groovy.grails.orm.hibernate.metaclass.AbstractFindByPersistentMethod.doInvokeInternalWithExpressions(AbstractFindByPersistentMethod.java:62) 
...

仅在执行service方法中的行时。

0 个答案:

没有答案