Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate Grails中的LazyInitializationException异常_Hibernate_Grails_Gorm_Lazy Evaluation_Eager - Fatal编程技术网

Hibernate Grails中的LazyInitializationException异常

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(){

Grails2.2.1

我的简单域:

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

如果有任何帮助,请告诉我们。我自己也很困惑