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();
}
答案 0 :(得分:0)
我猜你要为Team.users加载一个Lazy集合。 这可能是您的TransactionManager的一个问题。
为您的HibernateSession创建一个TransactionManager(如果尚未创建)并使用@Transactional注释您的getModelById方法。
答案 1 :(得分:0)
你的问题是你正在尝试初始化一个懒惰的关系。初始化意味着Hibernate尝试执行SELECT
语句以获取数据。
这是有问题的,因为您在初始化的代码周围没有任何Transaction
。
请参阅我的文章了解详细信息:http://blog.arnoldgalovics.com/2017/02/27/lazyinitializationexception-demystified/