iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot JPA懒加载失效的解决方案(亲测有效)
  • 833
分享到

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

2024-04-02 19:04:59 833人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

SpringBoot JPA懒加载失效 使用springBoot JPA 对两个实体类进行双向关联,并设置了懒加载,如下: 然后在查询后用到了roles,会报错, 解决办法如下:

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)取消懒加载,直截了当(暂时没想到别的)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

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

本文链接: https://www.lsjlt.com/news/131730.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作