浅谈hibernate急迫加载问题(多重外键关联)
作者:Islandww 发布时间:2023-08-18 12:58:54
标签:hibernate,外键关联
数据库结构如下
strategy中有外键member_id(关联member表)外键strategy_category(关联category表)而member表中有外键position_id(关联positons表)
如果前台页面直接查询stategy表中内容我们hql语句如果这么写
Stringhql="FromStrategywhereid=:id";
控制台会报nosession错误这是因为hibernate默认懒加载只有我们需要的时候才会将关联的对象加载出来这里在我们前台需要取关联对象中的属性的时候session已经关闭了额才会报这样的错误
那么如何解决呢
这里建议使用leftjoinfetch的方式来加载对象而不是将注解中默认的懒加载改为急迫加载效率会很低
语句如下
Strategystrategy=(Strategy)sessionFactoryUtil.getSession()
.createQuery("FromStrategysleftjoinfetchs.strategyCategoryleftjoinfetchs.memberleftjoinfetchs.member.positionswheres.id=:id")
.setInteger("id",id).uniqueResult();
这里需要注意的是因为关联的member表中又关联了positions表所以需要一并加载出来另一个需要注意的是这里的s.id必须这么写因为这里的每张表的主键名都为id如果不指明系统无法辨识
来源:http://blog.csdn.net/islandww/article/details/78610914
0
投稿
猜你喜欢
- 简介我们在使用flutter的过程中,有时候需要控制某些组件是否展示,一种方法是将这个组件从render tree中删除,这样这个组件就相当
- 单例模式为什么要用单例确保某个类只有一个对象,常用于访问数据库操作,服务的配置文件等。单例的关键点1、默认构造函数为private,复制构造
- Java裁剪压缩PNG图片,透明背景色变黑import java.awt.Graphics2D;import java.awt.Image;
- 在上篇文章给大家介绍了Mybatis中#{}和${}传参的区别及#和$的区别小结,如果大家有需要可以参考下。$和#简单说明:#相当于对数据
- 错误详情:java.lang.NoSuchMethodException: [Lorg.springframework.web.multip
- 简介在实现登录功能时,一般为了安全都会设置验证码登录,为了防止某个用户用特定的程序暴力破解方式进行不断的尝试登录。常见验证码分为图片验证码和
- 本文主要介绍了25行Java代码将普通图片转换为字符画图片和文本的实现,分享给大家,具体如下:原图生成字符画文本(像素转换字符显示后,打开字
- this总要有个事物来代表类的当前对象,就像C++中的this指针一样,Java中的this关键字就是代表当前对象的引用。它有三个主要的作用
- 应用场景有些时候项目中会用到很多路径,并且很可能多个路径在同一个根目录下,那为了方便配置的修改,达到只修改根目录即可达到一改全改的效果,此时
- 我们通过项目的reimport等众多办法无法解决之后:假设这个是爆红的,因为被我已经解决了。我们进入到我们的本地仓库, 新建包。在repos
- Java 异常的栈轨迹(Stack Trace)详解 捕获到异常时,往往需要进行一些处理。比较简单直接的
- Java注解是在JDK5时引入的新特性,鉴于目前大部分框架(如spring)都使用了注解简化代码并提高编码的效率,因此掌握并深入理解注解对于
- 复合语句Java的复合语句是以整个区块为单位的语句,由{}以及{}内包含的内容组成对于复合语句来说,复合语句创建了一个局部变量的作用域,该作
- 在实际应用中,大家使用的密码可以说多种多样,但是无论有多少,其组成不遑是有可打印字符组成的,我们可以认为class CreateDic{ p
- 在项目中经常要用到将字符串解析成Locale,但是没有一个比较好用的类。java本身提供了3个构造函数,但是实际使用过程中,需要自己解析,比
- Java内部类一、 含义在Java编程语言里,程序是由类(class)构建而成的。在一个类的内部也可以声明类,我们把这样的类叫做内部类。二、
- 题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。经典题,不多说,直接上代码import java.
- 在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,由于项目使用了Spring+MyBatis的配置,所以打算使用M
- 实例如下:import java.lang.reflect.Field;import java.lang.reflect.Invocatio
- 自然排序TreeSet集合在存储数据时有一定的顺序,它会将一些数据进行比较,比较调用的是comparaTo()方法,该方法是在Compara