java - org.hibernate.LazyInitializationException:无法初始化代理 - 尝试初始化时没有会话
问题描述
我有一个名为 Player 的 LAZY fetch 实体。我正在尝试手动让休眠对其进行初始化,但是我收到了该错误,就好像我在尝试在初始化之前使用 Player 实体一样。这是我在第一行收到错误的示例:
if (!Hibernate.isInitialized(contest.getPlayer())) Hibernate.initialize(contest.getPlayer());
playerName = contest.getPlayer().getName();
(请注意,使 Player 实体 EAGER 获取不是一种选择,因为它会导致太多的延迟问题)
解决方案
您不能在事务之外使用 Hibernate.initialize()。您可以在获得查询结果后立即使用 Hibernate.initialize(我的意思是在同一事务中),或者如果您想稍后对其进行初始化 - 编写单独的查询来获取播放器。
推荐阅读
- ios - 具有固定宽度的 collectionView 单元格和动态高度
- java - 无法通过捆绑将字符串从一个片段发送到另一个片段
- c# - C#如何将日志打印到控制台?
- angular - angular8中如何在不刷新页面的情况下更改url的值
- sql - 如何获取按工作日排序的sql查询
- r - R - 将列变量从分类值更改为名义值
- azure - 仅在构建管道中出现 WIX ICE 验证错误?
- python - 如何将python项目转换为exe文件?
- java - 为 Spring Boot 多模块项目部署 war 文件时,Tomcat 出现 404 错误。使用相同的tomcat在IDE中启动时工作正常
- amazon-web-services - 为部署在 AWS Lightsail 实例上的网站(域)添加子域