Sur*_*jee 10 java spring hibernate lazy-loading exception
我有两个物理服务器,我的Web应用程序由负载均衡器管理.我总是得到 -
org.hibernate.LazyInitializationException:无法初始化代理 - 没有会话
当其中一个服务器被命中而另一个服务器顺利运行而没有任何问题.我有一个由应用程序启用和管理的本地托管缓存存储.只有在尝试从一个表访问一个特定列时才会发生此异常.无论哪个服务器被命中,其余的操作都可以正常工作.
使lazy = false将成为性能问题,因为该表上的行数非常大.顺便说一下,我们在会话中使用get(object)而不是load(object).
Abd*_*ull 13
从您提供的标签中,我推断您使用Spring Framework遇到了这个问题.我LazyInitializationException
在使用Spring Data时遇到了同样的问题org.springframework.data.jpa.repository.JpaRepository
.
我通过注释间接使用Hibernate从数据库中检索数据的方法解决了这个问题@Transactional
.
atr*_*ain 10
听起来您尝试访问的列被配置为实体中的某种关联(OneToMany,ManyToOne,等等),并且您没有在DAO中填充该关联.然后,当您尝试访问该列时(在代码中没有Hibernate会话的位置),它没有填充,Hibernate会尝试加载它,然后繁荣.
因为您实际上正在使用该关联中的数据,所以这EAGER
听起来像您实际上想要做的事情.如果该表太大,您应该查看索引,以便对它进行查询是有效的.
你的对象是分离的.在访问它之前,您需要将其重新附加到当前会话:
session.update(object);
Run Code Online (Sandbox Code Playgroud)
还要确保在事务中访问它
在此处阅读有关问题/解决方案的更多信
归档时间: |
|
查看次数: |
37708 次 |
最近记录: |