Hibernate Grails中的LazyInitializationException异常
Grails2.2.1 我的简单域:Hibernate Grails中的LazyInitializationException异常,hibernate,grails,gorm,lazy-evaluation,eager,Hibernate,Grails,Gorm,Lazy Evaluation,Eager,Grails2.2.1 我的简单域: class Article{ SortedSet<Photo> photoGallery //helper method Photo getMainPhoto(){ Photo mainPhoto = photoGallery.find{it.mainPhoto} return mainPhoto } } 类文章{ 分类集照片库 //辅助方法 照片getMainPhoto(){
class Article{
SortedSet<Photo> photoGallery
//helper method
Photo getMainPhoto(){
Photo mainPhoto = photoGallery.find{it.mainPhoto}
return mainPhoto
}
}
类文章{
分类集照片库
//辅助方法
照片getMainPhoto(){
Photo mainPhoto=photoGallery.find{it.mainPhoto}
返回主照片
}
}
一对多照片库被懒散地获取
我从a.gsp视图调用getMainPhoto
方法。
问题是,有时(并非总是)在尝试从懒惰的一对多照片库获取主照片时,我会遇到一个LazyInitializationException
错误
为什么这种情况偶尔发生,而不是每次调用该方法时发生?这正常吗?我怎样才能解决这个问题,而不让这段关系被急切地吸引
谢谢我不确定,但是当我试图访问一个在将来有嵌套对象的对象时,我经常会遇到相同的错误,因此有时由于懒惰,在并发执行中,所有嵌套的域对象在使用之前都不会被提取 通过在视图上使用块之前访问块上的相同特性,可以避免此问题 因此,如果您在行下方添加打印语句或其他内容
Photo mainPhoto = photoGallery.find{it.mainPhoto}
然后它应该被加载
我不确定,但我认为如果你这样添加:
Photo mainPhoto = photoGallery.find{it.mainPhoto}
println("mainPhoto=${mainPhoto}")
然后它应该呈现在GSP页面上。您给出的代码,是如何定义域类,
文章的?您甚至可以使用类似于SortedSet
的东西吗?我认为如果您希望Grails能够正确处理所有事情,就需要在所有一对多的情况下使用hasMany
另一件可能有用的事情是:看看文章
是否有自动生成的助手方法,比如getPhotoGallery
。也就是说,不要只直接参考photoGallery
如果有任何帮助,请告诉我们。我自己也很困惑