欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

SpringBoot JPA懒加载失效的解决方案(亲测有效)

时间:2021-11-09 11:37:00|栏目:JAVA代码|点击:

SpringBoot JPA懒加载失效

使用springBoot JPA 对两个实体类进行双向关联,并设置了懒加载,如下:

然后在查询后用到了roles,会报错,

解决办法如下:

1. 在配置文件中加入:

spring.jpa.properties.hibernate.enable_lazy_load_no_trans =true

2. 如果你是在SpringBoot的测试类 中使用报错,则在方法上加入@Transactional注解

在百度查询时发现有人说 修改该配置: spring.jpa.open-in-view=true ,经测试,该项配置默认就是true,并且没有用。

JPA懒加载引起的bug

自己闲暇用JPA写了个ORM操作的练习,发现一个诡异的问题。

如下图

1:读取的产品product的实际库存stock是20,冻结库存frozenStock是0;

2:减少该产品实际库存5,冻结库存+5;

3:重新查询该产品

问题:两个单元校验,发现实际算出来的库存差值不是5是0!

博主通过查询商品信息findProductById()方法得到答案。如下图,调用方法返回的实体类product的属性都是null,F7进入调试才去查询产品的信息,查完之后才打印产品的名称,即类的"懒加载"。所以在步骤1之后,步骤2修改了库存,重新读取product的库存已经是扣减过的15了。

解决:

在实体类上加上@Proxy(lazy = false)取消懒加载,直截了当(暂时没想到别的)

上一篇:JAVA | Guava EventBus 使用 发布/订阅模式的步骤

栏    目:JAVA代码

下一篇:谈谈HttpClient使用详解

本文标题:SpringBoot JPA懒加载失效的解决方案(亲测有效)

本文地址:http://www.codeinn.net/misctech/182892.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有