繁体   English   中英

在Hibernate JPA中如何透明地解决“无法延迟初始化角色集合”的异常

[英]In Hibernate JPA how to transparently solve “ failed to lazily initialize a collection of role ” exception

我正在将一个巨大的项目从Eclipselink迁移到在Wildfly 10.0上运行的Hibernate JPA

移到Hibernate之后,我得到了一个著名的例外:“未能懒惰地初始化角色集合”

我发现了许多针对此问题的解决方案,例如关于此Question的这些建议以及旧的OpenSessionInView方法。

但是这些解决方案已经过时了,需要在我使用eclipselink的现有代码上进行一些更改。

他们是可以节省我时间的更新,现代,透明的解决方案吗?

注意 :我没有使用spring(仅JPA和EJB)。

我认为您正在寻找hibernate.enable_lazy_load_no_trans配置属性。 但这是一个反模式。 仅仅因为其他JPA提供程序正在使用它,并不意味着它同样有效,甚至是适当的。

“修复” LazyInitializationException另一种不好的方法是View中Open Session,它也是Anti-Pattern

处理LazyInitializationException最佳方法JOIN FETCH所有一对一和多对一关联,以及单个单个多对关联。

如果您需要获取多个一对多或多对多关联,则第一个关联应为JOIN FETCH-ed ,而随后的关联应使用单独的查询初始化。 您可以导航关联以触发初始化,也可以使用Hibernate#initialize

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM