Grails 2.2.1

我的简单域:

class Article{
    SortedSet<Photo> photoGallery

    //helper method
    Photo getMainPhoto(){
        Photo mainPhoto = photoGallery.find{it.mainPhoto}
        return mainPhoto
    }
}

一对多的照相馆被懒洋洋地拿来

我从.gsp View 调用getMainPhoto方法。
问题是有时(并非总是)尝试从懒惰的一对多照片库中获取主照片时出现LazyInitializationException错误。

为什么这偶尔发生,而不是每次我调用该方法时发生?那是正常的吗?我又该如何解决这个问题,而又不急于建立关系呢?

谢谢

最佳答案

不确定,但是当我尝试访问一个在将来内部具有嵌套对象的对象时,我经常遇到相同的错误,因此有时在由于懒惰而进行的并发执行中,之前并未获取所有嵌套域对象使用它们。

通过在 View 上使用相同的属性,可以避免该问题。

因此,如果您在行下添加打印语句或其他内容

Photo mainPhoto = photoGallery.find{it.mainPhoto}

那么它应该被加载。

我不确定,但是我想如果您这样添加它:
Photo mainPhoto = photoGallery.find{it.mainPhoto}
println("mainPhoto=${mainPhoto}")

那么它应该在GSP页面上呈现。

10-07 14:59