10

您在 Grails 中遇到的最常见的地方在哪里org.hibernate.LazyInitializationException,原因是什么,您是如何解决的?

我认为这个例外对于新手来说很多,所以如果你能提供更多的例子,那就太好了。

4

2 回答 2

10

让我们举个例子:

class Book {
  String title
  Author author
}

class Author {
  ...
}

Book book = Book.get(1)

众所周知,默认获取模式在域类中是惰性的。考虑上面的例子,假设我们得到了 book 对象,然后 Book 对象被附加到 hibernate session 对象,即自动第一级缓存。在域对象与会话对象分离之后,我们尝试获取 book.author,此时它引发了延迟初始化异常。

因此,解决方案是使用以下代码将获取模式设置为渴望或将您的图书对象附加到休眠会话:

if(!book.isAttached()){
     book.attach()
}

上面给出的描述是其中一种情况。可能还有更多。我请求其他人请分享。

于 2009-09-08T04:42:06.800 回答
1

我得到了一个,因为我正在检查用户是否有权在非事务性服务中使用 JSecurity/Shiro 执行某些操作。最后,我只需将服务设置为事务性即可摆脱异常。

更多信息在这里: http: //www.nabble.com/JSecurity-LazyInitializationException-in-default-DbRealm.isPermitted%28%29-td24939803.html

于 2009-09-02T15:35:50.377 回答