懒得初始化角色集合:无法初始化代理 - 没有会话

时间:2017-05-24 01:52:11

标签: java spring hibernate session proxy

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"])

有人可以解释为什么会这样吗?我学会在spring / hibernate环境中使用jersey。我对这种懒惰初始化的理解是因为会话超出了范围。提前致谢。

    @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();
    }

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

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