其中包含一个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方法中的行时。