懒加载异常

springboot+jpa
今天用RabbitMQ发布订阅者模式来实现监听问卷使用状况的时候,遇到懒加载问题,这块代码本身是没有问题的(因为之前放在别的service层里是可以正确运行的)
debug的时候出现这个异常
Unable to evaluate the expression Method threw ‘org.hibernate.LazyInitializationException’ exception
在这里插入图片描述
idea报错:加载出现问题
下面这篇文章很好的给出了解决方案
我的解决:
在配置文件中加上:spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true

MyBatis懒加载是指在查询关联对象时,只有在真正使用到这些对象时才会进行加载,而不是在查询主对象时就一次性加载所有关联对象。这样可以减少不必要的数据库查询,提高查询效率。 在MyBatis中,可以通过配置来实现懒加载。一种常用的方式是使用MyBatis的association和collection标签来配置关联对象的懒加载。association用于一对一关系的懒加载,而collection用于一对多关系的懒加载。 例如,假设有一个User对象关联一个Order对象列表,可以通过如下配置来实现懒加载: ```xml <resultMap id="userResultMap" type="User"> <id property="id" column="id" /> <result property="name" column="name" /> <collection property="orders" ofType="Order" select="selectOrdersByUserId" fetchType="lazy" /> </resultMap> ``` 上述配置中,fetchType="lazy"表示orders列表的加载方式为懒加载。当查询User对象时,只有在访问orders列表时才会执行selectOrdersByUserId查询语句,实现懒加载。 需要注意的是,懒加载需要确保在Session关闭之前访问关联对象,否则会抛出异常。可以使用Session的selectList方法来解决该问题,如: ```java List<User> users = session.selectList("selectUsers"); for (User user : users) { List<Order> orders = user.getOrders(); // 访问关联对象,触发懒加载 // ... } ``` 通过配置和正确使用Session,可以实现MyBatis的懒加载功能,提高查询性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值