我将用一个例子来解释我的问题。在我的JSP登录页面中,每个正确的登录都放入一个名为“user”的对象的实例,它将用户的数据保存到HttpSession(session.setAttribute(“user”,userObject)
)中。创建该对象的方法是检查用户的用户名和密码,并从HibernateSession检索user对象的实例('user')。
在另一个页面中,当我从HttpSession检索上面设置的userObject时,可以毫无错误地检索该对象。但是当调用它的方法时,它会给出一个异常org.hibernate.lazyInitializationException:could not initialize proxy-no session
。为什么我不能从HttpSession中访问userObject(尽管我已经在前面放了它)?
为什么在HttpSession中存在一个空对象(实例变量没有值),即使该对象在添加到会话之前有值?
如果user
实体有一个集合属性,而该属性是懒洋洋地提取的,就会发生这种情况。然后,只有当调用方实际需要通过size()
、iterator()
等方式访问集合时,集合才会实际填充来自DB的数据。这需要在与检索user
时相同的Hibernate会话中发生。在一个设计得当的webapplication中,Hibernate会话的生命周期正好是一个HTTP请求-响应。因此,如果访问collection属性发生在不同的Hibernate会话中(读为:不同的HTTP请求),那么您将完全得到此异常。
要解决此问题,您需要急切地获取collection属性,或者在检索用户
时对collection属性使用hibernate#initialize()
。
问题内容: 我正在尝试将Redis会话集成到用Node.js编写的身份验证系统中。 我已经能够成功设置Redis服务器和Express服务器。 这是我的设置(只是重要的一点): 现在…我该如何实际创建,阅读和销毁会话?我已经阅读了很多关于如何设置的文章以及关于SO的许多问题,但是我发誓每个都只停留在配置上,并且不解释如何实际使用它… 我知道这可能非常简单,但是请不要投票,而只是解释一下:)。 问题
我在一次采访中被问到,你有一个活动的hibernate会话,你从中检索一个实体——客户实体。您对实体进行了一些更改,但没有通过调用em.flush或em.persist将其保存到数据库中。现在,再次从数据库中检索相同的实体。它会有你之前做的改变吗?
SSO/SAML使用OKTA API与SP一起工作。我的问题是,有没有一种方法可以从我的应用程序中获取当前的OKTA会话Id?
问题内容: 如何在PHP中设置会话生存期?我希望将其设置为永久,只要该请求存在。该请求是AJAX。我处理AJAX请求的PHP代码是: 和JavaScript: 该会话始终在300秒后重置。 问题答案: PHP上的会话与Cookie类型的会话一起使用,而在服务器端,会话信息会不断删除。 要在php中设置时间,可以在session_start之前使用session_set_cookie_params
我正在使用JPAContainer和Hibernate4.3开发一个Vaadin webapp。我遵循了这个链接的说明,成功地实现了EntityManager-per-Request模式。这意味着惰性加载可以很好地用于JPAContainer 但是,每次我需要使用纯JPA时,它都无法延迟负载。 下面是一个示例代码: 另外,当我从JPAContainer中移除实体时,我会收到一个错误:org.hib
1. 前言 本节课程将和大家一起聊聊 Hibernate 的核心组件之一: Session 对象。 通过本节课程,你将了解到: 创建 Session 对象的 2 个方法; 线程上下文的作用。 2. 创建 Session 对象 Session 是 Hibernate 的重要组件之一,是交给开发者的一把利剑。开发者可使用 Session 对象提供的增、删、改、查(Crud)等方法实现基础的数据操作。