【问题标题】:failed to lazily initialize a collection of role : could not initialize proxy - no Session无法延迟初始化角色集合:无法初始化代理 - 无会话
【发布时间】:2017-05-24 14:02:12
【问题描述】:
Exception:

failed to lazily initialize a collection of role: com.cerner.budgetmanagement.model.Team.users, could not initialize proxy - no Session (through reference chain: com.cerner.budgetmanagement.model.Team["users"])

有人能解释一下为什么会这样吗?我学习在春季/休眠环境中使用球衣。我对这种延迟初始化的理解是因为会话超出了范围。提前致谢。

    @SuppressWarnings({ "unchecked"})
    @GET
    @Path("/name/{teamId}")
    @Produces(MediaType.APPLICATION_JSON)
    public Response getBudgetPlan(@PathParam("teamId") int teamId) { 

        teamDao = applicationContext.getBean("dao", Dao.class);
        final Team team = teamDao.getModelById(Team.class, teamId);
        Hibernate.initialize(team);
        return Response.status(201).entity(team).build();
    }

【问题讨论】:

    标签: java spring hibernate session proxy


    【解决方案1】:

    我猜你有一个 Lazy 集合要为 Team.users 加载。 这可能是您的 TransactionManager 的问题。

    为您的 HibernateSession 创建一个 TransactionManager(如果尚未创建)并使用 @Transactional 注释您的 getModelById 方法。

    【讨论】:

      【解决方案2】:

      您的问题是您正在尝试初始化惰性关系。初始化意味着 Hibernate 尝试执行 SELECT 语句以获取数据。

      这是有问题的,因为正在初始化的代码周围没有任何Transaction

      详细了解请参考我的文章:http://blog.arnoldgalovics.com/2017/02/27/lazyinitializationexception-demystified/

      【讨论】:

        猜你喜欢
        • 2016-07-06
        • 2015-07-02
        • 2018-02-25
        • 2017-01-30
        • 1970-01-01
        • 2016-06-04
        • 2018-11-21
        • 2014-12-23
        • 2019-05-21
        相关资源
        最近更新 更多