JPA懒加载引起的bug

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

JPA懒加载引起的bug

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

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

3:重新查询该产品

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

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

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

JPA懒加载引起的bugJPA懒加载引起的bug

JPA懒加载引起的bug