【问题标题】:LazyInitializationException in SpringSpring中的LazyInitializationException
【发布时间】: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


【解决方案1】:

因为您在用户登录时获取了主体信息,并在那时将它们存储在 http 会话中。

如果您尝试在以后的任何 http 请求中访问该对象的未初始化集合,则休眠会话(获取主体的位置)将关闭(在登录后),并且您会收到 LazyInitializationException

【讨论】:

    猜你喜欢
    • 2019-05-19
    • 2019-12-09
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 2018-06-10
    • 2011-12-21
    • 1970-01-01
    相关资源
    最近更新 更多