Jav*_*avi 2 spring hibernate lazy-loading spring-mvc spring-security
我在Spring应用程序中遇到了LazyInitializationException.我已经配置了OpenEntityManagerInViewFilter,所以我将所有关系设置为FetchType.LAZY,它们都有效.问题是当我尝试通过Spring Security访问会话中的用户并在JSP中打印LAZY信息时,如下所示:
<sec:authentication property="principal" var="userAuth"/>
${userAuth.organisation.id}
Run Code Online (Sandbox Code Playgroud)
我明白了
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
Run Code Online (Sandbox Code Playgroud)
虽然我可以毫无问题地做$ {userAuth.username}
我有一个自定义身份验证提供程序,它只是一个使用Hibernate加载用户的DAO
<sec:authentication-provider user-service-ref="userDAOImpl">
Run Code Online (Sandbox Code Playgroud)
奇怪的是,当我将组织对象设置为EAGER时,我遇到了同样的问题.
只有在我尝试通过sec:authentication进行访问时才会出现此问题.如果我将用户添加到模型然后访问jsp中的数据就可以了.
为什么我无法访问存储在链接到用户的Object中的数据?
谢谢
因为您在用户登录时获取了主体信息,并在那时将它们存储在http会话中.
如果您尝试在以后的任何http请求中访问该对象的非初始化集合,则会关闭hibernate会话(获取主体的位置)(刚刚登录之后),并且您获得了LazyInitializationException
归档时间: |
|
查看次数: |
818 次 |
最近记录: |