当前位置: 首页 > 知识库问答 >
问题:

org.hibernate。LazyInitializationException:未能延迟初始化角色集合:无法初始化代理-无会话

缑修齐
2023-03-14

我不明白为什么会发生这种情况。根据代码路径,当引发此异常时,我应该在同一线程中并且会话应存在。

有人能告诉我我错过了什么吗?

我有设置

<property name="hibernate.current_session_context_class">thread</property>

在hibernate.cfg.xml档案里

我在Servlet过滤器中创建了以下代码

 try{
  factory.getCurrentSession().beginTransaction();  
  httpRequest.getRequestDispatcher("/public/index.html").forward(httpRequest,response);
 }finally{
  factory.getCurrentSession().getTransaction().commit();  
 }

在index.xhtml文件中,我有以下调用:


做一些事情

index.xhtml正在使用使用ui include加载menu.xhtml文件的模板。然后,菜单文件会插入menulist。来自menuItemsViewController的servicesMenuItems调用最终以下面的代码结束

 public Collection<Bulletin> getBulletin(User bean){
   Session session=factory.getCurrentSession();
   try{
     session.refresh(bean);
     if(bean.getObligations().size()>0){
     do some stuff
   }

如您所见,会话存在,当 session.refresh(bean) 没有抛出异常,但 bean.getObligations() 正在抛出时,

无法延迟初始化角色:数据的集合。User.obligations,无法初始化代理-没有会话

你知道为什么吗?

共有2个答案

谷德本
2023-03-14

好的..我解决了这个问题,但我仍然不知道是什么原因造成的...在仔细检查我的代码后,我注意到我将用户置于会话中..第一次尝试时,一切正常,第二次尝试浏览页面时,出现了异常...

我开始清除会话,并在每次尝试访问该页面时将用户置于会话中。现在我不再看到例外...

符畅
2023-03-14

默认惰性属性为true。这意味着hibernate不会填充实体上对象属性。在这种情况下,Hibernate不会在用户bean中填充义务。当你试图获取义务时,会抛出一个异常。

Hibernate急切与懒惰获取类型

您可以更改懒惰属性,或者必须自己履行义务。

 类似资料:
  • 我正在制作一个网站,我试图在其中订购配料。我选择配料并输入其数量,然后单击添加。我重复了几次。然后我进入下一页,在其中我选择了一个供应商。然后我按“订单”。 预计将Nabavka插入数据库并打开一个页面,说明订单成功,但我收到一个异常,告诉我不能懒惰地初始化它。 来自NabavkaController。java: Nabavka.java: 纳米尔尼卡。java: 纳巴夫卡科帕。java: 纳巴夫

  • 我有一个应用程序,我正在扩展它以提供REST API。在主站点中一切正常,但当我尝试访问REST API时,我在异常日志中得到以下内容: 禁用延迟加载将解决此问题,但会导致不可接受的性能(加载时间从 200 毫秒到 22 秒)。我不知道如何处理这个问题。 我刚开始在ColdFusion中Rest,在我看来,CFC正在以一种不寻常的方式被处理。它们似乎没有被初始化(init方法似乎没有运行),现在看

  • 问题内容: 我有下一个错误: 我的实体: 我有一个服务班: 我从另一种服务方法调用服务: 但是,当我试图调用这个方法我收到线异常,当我打电话时,也会发生同样的异常上。我已经检查了事务管理器,并且配置正确,并且此步骤中存在事务。另外,我已经检查了关于与此异常相关的stackoverflow的大量答案,但没什么用。 可能是什么原因造成的? 问题答案: 看来模型是一个独立的实体。 尝试合并并在合并实例上

  • 问题内容: 在我的spring项目的自定义AuthenticationProvider中,我正在尝试读取已记录用户的权限列表,但是遇到以下错误: 从StackOverflow的此处阅读其他主题,我理解这种情况的发生是由于框架处理此类属性的方式引起的,但是我无法为我的情况找到任何解决方案。有人可以指出我做错了什么,我该怎么做才能解决? 我的Custom AuthenticationProvider的

  • 我正在使用JPA(Hibernate 4 . 3 . 3作为持久性提供者)和Spring (3.2.2),我所有的字段都加载得很好,但是当我试图访问我的集合时,它抛出了错误- 当我调试这个时,我的实体类中定义的每个集合都有错误- 我尝试使用collection.size()和Hibernate.initialize(),但都不起作用。在Internet上搜索时,我发现扩展Persitence将解决

  • 我已经对这个错误进行了研究,但仍然找不到合适的解决方案。这是我的代码: 配置: 模型: 现在在我的控制器中,我调用导致异常的DAO的实现: 编辑: 这里是异常堆栈: 那么在这种情况下如何修复延迟加载异常呢? 编辑: 以下是DAO的实现: