返回顶部
首页 > 资讯 > 后端开发 > Python >如何解决hibernate一对多注解懒加载失效问题
  • 919
分享到

如何解决hibernate一对多注解懒加载失效问题

2024-04-02 19:04:59 919人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录hibernate一对多注解懒加载失效经排查,问题出在controller这边解决方法Hibernate懒加载异常说明及其解决懒加载异常出现的原因解决方案1解决方案2解决方案3h

hibernate一对多注解懒加载失效

在House类里有关联HouseInfo,设置了懒加载

但是页面ajax返回还是有HouseInfos的数据。

经排查,问题出在controller这边

@response注解启用jackson框架对House进行解析

然后调用了每个属性的get方法,自然houseInfos的懒加载就失效了

解决方法

给houseInfos字段加上@JSONIgnore注解忽略json解析

Hibernate懒加载异常说明及其解决

在集成ssh2三大框架的时候很容易就会造成懒加载异常,通常显示的错误信息是:

org.hibernate.LazyInitializationException: could not initialize proxy - no Session

懒加载异常出现的原因

我们在Action中调用Service中的方法,方法中开始时open session,当调用结束后close session,例如类User中有一个Department属性,我们使用Hibernate查询一个User时,hibernate默认是懒加载的,此时查询出的User不会把Department中所有的信息查询出来。

当session 关闭后我们在Result中(例如在jsp中打印department.name)使用到了Department的name属性时就会出现懒加载异常。

解决方案1

不用懒加载(不推荐)

解决方案2

我们不在方法结束的时候关闭session,在执行完Action Result之后,通过过滤器关闭session,具体如下:

使用OpenSessionInViewFilter解决解决懒加载问题,在WEB.xml中配置:


 <!-- openSessionInViewFilter,改过滤器在view渲染时始终开启session,一劳永逸解决hibernate的懒加载问题,
      该过滤器必须配置在struts2过滤器之前,一般推荐使用(由于性能问题,在view渲染时始终开启session)-->
   <filter>
      <filter-name>openSessionInViewFilter</filter-name>
      <filter-class>org.springframework.ORM.hibernate3.support.OpenSessionInViewFilter</filter-class>
   </filter>
   <filter-mapping>
      <filter-name>openSessionInViewFilter</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>

解决方案3

例如涉及三个类 分别为Survey、Page、Question类,三个类的关联关系


class Survey{
  private Long id;
  private List<Page> pageList=new ArrayList<Page>();
}
class Page{
  private Long id;
  private List<Question> questionList=new ArrayList<Question>();
}
class Question{
  private Long id;
}

方法是强行在service层面是初始化代理对象.


 public Survey getSurveyWithChildren(Long sid){
   Survey s = surveyDao.getEntity(sid);
    //强行初始化pages和questions集合
    for(Page p : s.getPages()){
       p.getQuestions().size();
    }
    return s;
 }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 如何解决hibernate一对多注解懒加载失效问题

本文链接: https://lsjlt.com/news/154537.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何解决hibernate一对多注解懒加载失效问题
    目录hibernate一对多注解懒加载失效经排查,问题出在controller这边解决方法Hibernate懒加载异常说明及其解决懒加载异常出现的原因解决方案1解决方案2解决方案3h...
    99+
    2024-04-02
  • hibernate中利用 fetch=FetchType.LAZY 懒加载失败如何解决
    本篇文章为大家展示了hibernate中利用 fetch=FetchType.LAZY 懒加载失败如何解决,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。对这种懒加载问题,最后的做法是利用Spring...
    99+
    2023-05-31
    hibernate %type
  • 如何解决el-select数据过多懒加载问题
    这篇文章主要介绍如何解决el-select数据过多懒加载问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!el-select数据过多处理方式在日常项目中el-select组件的使用频...
    99+
    2024-04-02
  • 解决JPA @OneToMany及懒加载无效的问题
    目录JPA @OneToMany及懒加载无效@OneToMany小结一下吧实现JPA的懒加载和无外键例如转换时使用JPA @OneToMany及懒加载无效 @OneToOne @Ma...
    99+
    2024-04-02
  • Hibernate Lazy加载问题怎么解决
    这篇文章主要讲解了“Hibernate Lazy加载问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Hibernate Lazy加载问题怎么解决”吧!Hbm文件<bean i...
    99+
    2023-06-03
  • SpringBoot JPA懒加载失效的解决方案(亲测有效)
    SpringBoot JPA懒加载失效 使用springBoot JPA 对两个实体类进行双向关联,并设置了懒加载,如下: 然后在查询后用到了roles,会报错, 解决办法如下:...
    99+
    2024-04-02
  • 如何解决Hibernate Annotation问题
    这篇文章主要介绍“如何解决Hibernate Annotation问题”,在日常操作中,相信很多人在如何解决Hibernate Annotation问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何解决H...
    99+
    2023-06-17
  • vue 懒加载组件chunk相对路径混乱问题及解决
    目录懒加载组件chunk相对路径混乱问题问题描述具体如下解决方法懒加载组件 路径不对懒加载组件chunk相对路径混乱问题 问题描述 在vue项目中用vue-router做路由,做代码...
    99+
    2024-04-02
  • 如何解决php header 失效问题
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑如何解决php header 失效问题?PHP Header失效的原因分析及解决方法在PHP中用header("location:test.php")...
    99+
    2021-12-15
    php header 失效
  • win10注册ocx加载失败如何解决
    出现Win10注册ocx加载失败的情况,可能是由于ocx文件缺失或者注册不正确引起的。可以尝试以下几种解决方法:1. 确认ocx文件...
    99+
    2023-09-09
    win10
  • Linux下如何解决IPV6模块加载失败问题
    这篇文章主要为大家展示了“Linux下如何解决IPV6模块加载失败问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下如何解决IPV6模块加载失败问题”这篇文章吧。同事一个SUSE L...
    99+
    2023-06-27
  • 如何解决nginx php session失效问题
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑如何解决nginx php session失效问题?nginx中session跨页面失效问题的解决:获取session目录一般在php.ini里用session.save...
    99+
    2019-07-18
    nginx php session
  • jdbc连接失效问题如何解决
    要解决JDBC连接失效问题,可以尝试以下几个方法: 检查数据库服务器是否正常运行:确保数据库服务器正常运行并且可以接收连接。可以...
    99+
    2023-10-24
    jdbc
  • 如何解决PHP header失效的问题?
    在进行网站开发时,我们常常需要使用到PHP中的header()函数,在这篇文章中,我将为您介绍在使用header()函数时可能会出现失效的情况,并提供几种解决方案。一、header()函数失效的原因发送header()函数前已经输出内容在使...
    99+
    2023-05-14
  • Windows10应用加载失败不响应问题如何解决
      使用Windows10系统的过程中,如果一个应用经常出现不响应的情况,那么就说明这个应用加载失败了。出现加载失败的原因有很多,通过重置可以有效解决Windows10应用加载失败问题。   那么如何重置全部Win10应...
    99+
    2023-06-16
    Win10 应用 加载失败 问题 Windows10
  • 解决jupyter加载文件失败的问题
    遇到个小白常见的问题,发现度娘里面没有记录,翻墙谷歌了下,解决问题,在此写个说明。 事情起因: 在jupyter notebook中导入文件时发生了错误: %load p2_te...
    99+
    2024-04-02
  • 如何解决预加载InstantClick的问题
    这篇文章主要介绍如何解决预加载InstantClick的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在改造的时候代码高亮没法执行,准确的说是只执行一次,第二次就不执行了。所以发...
    99+
    2024-04-02
  • 如何解决ajax请求Session失效问题
    本篇内容主要讲解“如何解决ajax请求Session失效问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决ajax请求Session失效问题”吧!最近由...
    99+
    2024-04-02
  • Android Java try catch失效问题如何解决
    这篇文章主要介绍了Android Java try catch失效问题如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android Java try&n...
    99+
    2023-07-04
  • 如何解决php验证码失效问题
    这篇“如何解决php验证码失效问题”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何解决php验证码失效问题”文章吧。php...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作