首页 > 解决方案 > org.hibernate.LazyInitializationException:无法初始化代理 - 尝试初始化时没有会话

问题描述

我有一个名为 Player 的 LAZY fetch 实体。我正在尝试手动让休眠对其进行初始化,但是我收到了该错误,就好像我在尝试在初始化之前使用 Player 实体一样。这是我在第一行收到错误的示例:

    if (!Hibernate.isInitialized(contest.getPlayer())) Hibernate.initialize(contest.getPlayer());
    playerName = contest.getPlayer().getName();

(请注意,使 Player 实体 EAGER 获取不是一种选择,因为它会导致太多的延迟问题)

标签: javahibernateinitializationlazy-initialization

解决方案


您不能在事务之外使用 Hibernate.initialize()。您可以在获得查询结果后立即使用 Hibernate.initialize(我的意思是在同一事务中),或者如果您想稍后对其进行初始化 - 编写单独的查询来获取播放器。


推荐阅读