grails在事务服务中遇到lazzy初始化异常

grails在事务服务中遇到lazzy初始化异常,grails,Grails,在访问集合对象的属性时,我的事务性服务中出现了典型的hibernate惰性初始化异常 org.hibernate.LazyInitializationException:无法初始化代理-无会话 class ProductService { static transactional = true def xyz() { def products = Product.list() products.each { product -> def category =

在访问集合对象的属性时,我的事务性服务中出现了典型的hibernate惰性初始化异常

org.hibernate.LazyInitializationException:无法初始化代理-无会话


class ProductService {
  static transactional = true
  def xyz() {
    def products = Product.list()
    products.each { product ->
      def category = product.categories.asList().first()
      def title = category.title
    }
  }
}


当访问category的title属性时,我遇到了一个异常。xyz是Groovy调用的一个闭包,就像它是一个方法一样,但它不是一个方法。所以它不是由Spring代理的(它只是一个字段),并且您不会得到任何事务行为。在服务类中几乎没有一个好的理由使用公共闭包(内部实用程序闭包也可以)

这应该起作用:

void xyz() {
   for (product in Product.list()) {
       def category = product.categories.asList().first()
       def title = category.title
   }
}

很抱歉,我错把它关闭了,但它不是一个方法,我仍然得到这个问题,starange的一部分是它在我的本地和临时服务器上工作,但在生产服务器上失败。