浅谈hibernate急迫加载问题(多重外键关联)
作者:Islandww 时间:2023-08-18 12:58:54
数据库结构如下
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
标签:hibernate,外键关联
0
投稿
猜你喜欢
SpringBoot MongoDB 索引冲突分析及解决方法
2023-01-23 06:28:05
C#中XmlTextWriter读写xml文件详细介绍
2022-01-26 05:13:48
js事件模型与自定义事件实例解析
2021-05-26 06:15:06
Mybatis环境配置及测试详解
2023-11-24 07:06:25
有关Java中的BeanInfo介绍
2023-08-05 00:13:42
浅析Mybatis Plus和Mybatis的区别
2022-12-05 18:14:18
Android.bp语法和使用方法讲解
2022-09-29 19:31:19
Java获取任意http网页源代码的方法
2022-07-06 01:45:37
Android自定义轮播图效果
2022-10-27 06:31:26
如何使用Spring AOP预处理Controller的参数
2022-09-11 10:01:56
深入理解C#中常见的委托
2022-03-23 01:05:46
java微信开发API第一步 服务器接入
2023-08-24 11:18:26
java项目构建Gradle的使用教程
2023-06-07 19:17:41
Java 中如何使用 stream 流
2021-10-09 01:13:37
C#实现利用Windows API读写INI文件的方法
2023-03-16 01:23:06
Java编程基础测试题分享
2023-11-27 22:14:58
全面总结java IO体系
2023-05-16 13:19:12
C#支付宝新版支付请求接口调用
2023-02-23 15:50:45
Java实现淘宝秒杀聚划算抢购自动提醒源码
2022-09-11 10:11:53
JavaCV调用百度AI实现人脸检测方法详解
2023-01-09 01:16:09