java - 延迟初始化异常

标签 java hibernate jakarta-ee ejb

我有 2 个 Hibernate 对象:

Dero 和 Motif。

一个 Dero 有一组 Motif。

我从数据库加载了一个 Dero 对象,效果很好。但是当我尝试访问它的 Motif 集时:

 assertEquals(dero.getMotifRefus(),deroFromDB.getMotifRefus());

我遇到异常:

org.hibernate.LazyInitializationException: failed to lazily initialize a collection 
of role: com.dossier.Derogation.motifRefus, no session or session was closed
at
 org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)

如何解决这个问题?

最佳答案

看起来在初始化惰性 Motif 集之前,获取 Dero 的 session 已关闭。根据您的环境和用例,有不同的方法可以解决此问题。

如果您谈论的是 Spring 驱动的 Web 应用程序,OpenSessionInViewFilter 适合您

<filter>
    <filter-name>OpenSessionFilter</filter-name>
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>

我敢打赌,任何网络应用程序都可以使用类似的解决方案。

这篇文章可能会有所帮助:Open Session in View (hibernate.org)

关于java - 延迟初始化异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1577512/

相关文章:

java - 如何在Java Spring Boot中读取Resources中保存的文件

java - spring mvc 3 和静态内容

java - Getter 和 Setter 还是返回方法?

java - 线程 "main"java.lang.ClassCastException : [Ljava. lang.Object 中的异常;不能转换为 model.AdminPopulate

java - Hibernate 过滤器可以与条件查询一起使用吗?

hibernate - 何时使用 EntityManager.clear()?

java - 测量 session 属性对象的大小

java - jol GraphLayout 输出中的 "(something else)"是什么?

java - 如何使用Java获得小时差

java - 用于任意 XML 的 JAXB @XmlAdapter