grails在事务服务中获得lazzy初始化异常

时间:2011-02-23 06:17:37

标签: grails

我在访问SET对象的属性时,在我的事务服务中得到一个典型的hibernate Lazy初始化异常。

org.hibernate.LazyInitializationException: could not initialize proxy - no Session


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


访问类别

的title属性时出现异常

1 个答案:

答案 0 :(得分:2)

xyz是一个由Groovy调用的Closure,好像它是一个方法,但它不是一个方法。所以它不是由Spring代理的(它只是一个字段),而且你没有任何事务行为。几乎没有理由在Service类中使用公共闭包(内部实用程序闭包很好)。

这应该有效:

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