Существует класс домена 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)
в другой службе приводит к тому же исключению.
Что здесь может быть не так?
Sidenote : Если я пытаюсь использовать
import org.springframework.transaction.annotation.Transactional
Вместо этого, как предлагается в другом контексте , результирующее исключение составляет
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)
...
только при выполнении строки внутри метода службы.