Grails和Hibernate的延迟初始化异常
-
21-09-2019 - |
题
在哪里,你已经得到了Grails中的org.hibernate.LazyInitializationException
最常见的地方,究竟是什么原因?你是怎么解决的呢?
我觉得这一个例外,出现了不少新手,所以如果你愿意提供更多的例子,这将是巨大的。
解决方案
让我们的示例:
class Book {
String title
Author author
}
class Author {
...
}
Book book = Book.get(1)
正如我们所知,默认获取模式是在域类懒惰。考虑到上面的例子,假设我们拿到书的对象,然后Book对象就会自动连接到即一级缓存Hibernate的Session对象。和域对象会从会话对象分开,然后我们尝试获取book.author,在这一刻后,引发延迟初始化例外。
因此,解决方案是,以要么取模式作为渴望或附上书对象使用下面给出的代码冬眠会话:
if(!book.isAttached()){
book.attach()
}
上面所给出的描述是该方案中的一个。可能有很多。我要求别人取悦份额。
其他提示
我有一个,因为我被检查,如果用户有权限做JSecurity /四郎一些行动,这不是事务性的服务。最终我不得不将服务设置为事务摆脱异常。
这里不隶属于 StackOverflow