解决: failed to lazily initialize a collection of role: XXX, could not initialize proxy - no Session
一般出现在Hibernate框架下,实体类中关联着其他实体类(一对多等关系),并且关联对象还是其懒加载fetch = FetchType.LAZY
@OneToMany(mappedBy = "template", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)@SortNatural@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)private SortedSet<ApplicationTemplateAttribute> attributeValues = new TreeSet<ApplicationTemplateAttribute>();
在查询出该实体对象时想使用其关联对象时比如get()等操作,就会报标题错误,主要原因是不在同一会话中,FetchType.LAZY只在实体对象想使用其关联对象时进行才进行查询数据库加载,可是你查询实体对象语句结束后会话就失效了,从而加载不了关联对象
解决方案
懒加载改为急加载
= FetchType.EAGER
这样当查询实体对象时会自动查询其关联对象,但是既然都用上了懒加载,说明我们项目业务需求有时候是不需要加载这关联对象的,每次都加载不太符合业务需要,性能浪费
使其在同一会话中查询
查询实体对象算一次查询,又要查询其关联对象又是一次查询,两次查询两个会话,使其在同一会话中,最简单的方法就是给service层中的业务方法加上事务注解,使其会话在方法执行结束后失效
@Transactional(readOnly = true)@Overridepublic ApplicationTemplate getTemplate(String templateId) {ApplicationTemplate applicationTemplate = this.getApplicationTemplate(templateId);Hibernate.initialize(applicationTemplate.getAttributeValues());return applicationTemplate;}
这个是强制加载该实体对象中的关联对象,只要对象get其关联对象就行
Hibernate.initialize(applicationTemplate.getAttributeValues())
解决: failed to lazily initialize a collection of role: XXX, could not initialize proxy - no Session相关推荐
- hibernate 延迟加载的错误 failed to lazily initialize a collection of role
这个问题一般出现在一对多的情况下,解决的方法有两种 1.设置lazy=false 如果是用annotation,则配置如下 @OneToMany( targetEntity = CourseAu ...
- org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.ljw
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.ljw ...
- org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role:no sessi
<set name="invigilators" table="examInvigilator " cascade="all" laz ...
- org.apache.struts2.json.JSONException: org.hibernate.LazyInitializationException: failed to lazily i
数据转换成json数据失败,封装的实体类中有集合字段,在get方法上面加@JSON(serialize=false)注解 @JSON(serialize=false) public Set<Su ...
- git解决“failed to push some refs to“问题
git解决"failed to push some refs to"问题 参考文章: (1)git解决"failed to push some refs to" ...
- 解决Failed to load class org.slf4j.impl.StaticLoggerBinder
解决Failed to load class "org.slf4j.impl.StaticLoggerBinder" 解决办法,两步: 一.在编译路径中添加Log4J的包,比如我一 ...
- hibernate中报错could not initialize proxy - no Session的解决方法
hibernate中报错:could not initialize proxy - no Session,怎么解决? 解决方法: 在该hbm文件中的 many-to-one 的最后加上:lazy=&q ...
- 【HIbernate异常】could not initialize proxy - no Session (已解决)
异常信息: org.hibernate.LazyInitializationException: could not initialize proxy - no Session 解决方法: 用 get ...
- win10 LTSC系统 安装应用商店和纸牌合集,解决从应用商店安装Solitaire Collection纸牌打开空白的问题
win10 LTSC系统 安装应用商店和纸牌合集,解决从应用商店安装Solitaire Collection纸牌打开空白的问题 参考文章: (1)win10 LTSC系统 安装应用商店和纸牌合集,解决 ...
最新文章
- 添加github ssh 公钥
- 04_ReplaceBlank
- JavaWeb无限级分销结构分析
- (转)JVM监控工具介绍
- 小汤学编程之JAVA基础day04——流程结构
- attodiskbenchmarks(磁盘传输速率检测)_硬盘坏了可以修复吗?电脑硬盘检测?
- MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能
- 《剑指offer》面试题46、47、49
- JAVA Thread的中断机制(interrupt)
- 一键安装iis php mysql环境_Windows Server服务器环境配置:一键安装IIS+PHP+MySQL环境...
- Flash Builder4序列号 注册机
- strcmp函数php,php strcmp函数怎么用?
- photoshop CS6 安装 coolorus色环
- bzoj5294: [Bjoi2018]二进制(线段树)
- FMI飞马网【线上直播】京东POP接口自动化测试
- 智道分析吊瓜子的营养价值
- ティラミス / 龙枪
- 海外抖音Tiktok这么火,到底值不值得做?
- 欢迎注册和登陆我们的学海灯塔
- Python大屏看板最全教程之Pyecharts图表