【发布时间】:2011-02-13 17:54:56
【问题描述】:
我的 Spring 应用程序中出现 LazyInitializationException。我配置了 OpenEntityManagerInViewFilter,因此我将所有关系都设置为 FetchType.LAZY,它们都可以工作。问题是当我尝试通过 Spring Security 访问会话中的用户并在 JSP 中打印 LAZY 信息时,如下所示:
<sec:authentication property="principal" var="userAuth"/>
${userAuth.organisation.id}
我明白了
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
虽然我可以毫无问题地执行 ${userAuth.username}
我有一个自定义身份验证提供程序,它只是一个使用 Hibernate 加载用户的 DAO
<sec:authentication-provider user-service-ref="userDAOImpl">
奇怪的是,当我将组织对象设置为 EAGER 时,我遇到了同样的问题。
仅当我尝试通过 sec:authentication 访问时才会出现此问题。如果我将用户添加到模型中,然后访问 jsp 中的数据,它就可以工作。
为什么我无法访问存储在与用户链接的对象中的数据?
谢谢
【问题讨论】:
-
你在stackoverflow上搜索过这个异常吗?
标签: hibernate spring spring-mvc spring-security lazy-loading