Grails 2.2.1
我的简单域名:
class Article{
SortedSet<Photo> photoGallery
//helper method
Photo getMainPhoto(){
Photo mainPhoto = photoGallery.find{it.mainPhoto}
return mainPhoto
}
}
懒散地获取一对多照片库
我从.gsp视图调用getMainPhoto
方法。
问题是有时(并非总是)在尝试从懒惰的一对多照片库中获取主照片时出现LazyInitializationException
错误。
为什么偶尔会发生这种情况而不是每次调用该方法?这是正常的吗?我怎么能解决这个问题,而不是急切地想要这种关系呢?
由于
答案 0 :(得分:0)
不确定,但我曾经遇到同样的错误,当我试图访问一个在未来有嵌套对象的对象时,所以有时在由于懒惰的并发执行中,所有嵌套的域对象都没有在使用它们之前获取。
在视图上使用它之前,可以通过访问块上的相同属性来避免问题。
所以如果你在行
下面添加一个print语句Photo mainPhoto = photoGallery.find{it.mainPhoto}
那么它应该被加载。
我不确定,但我想如果你这样添加它:
Photo mainPhoto = photoGallery.find{it.mainPhoto}
println("mainPhoto=${mainPhoto}")
然后它应该在GSP页面上呈现。
答案 1 :(得分:0)
您提供的代码是您定义域类Article
的方式吗?你甚至可以使用像SortedSet
这样的东西吗?如果您希望Grails正确处理所有事情,我认为您需要在所有一对多情况下使用hasMany
。
另一件可能有用的事情是:Article
是否有自动生成的辅助方法,如getPhotoGallery
。也就是说,不要直接引用photoGallery
。
如果有任何帮助,请告诉我们。我很困惑。