龙空技术网

避坑指南:springboot + spring data jpa 调用saveAll方法失效解决

西红柿炖土豆 353

前言:

而今你们对“springboot jpa 调用存储过程”都比较着重,你们都需要学习一些“springboot jpa 调用存储过程”的相关资讯。那么小编同时在网摘上网罗了一些有关“springboot jpa 调用存储过程””的相关资讯,希望我们能喜欢,同学们快快来学习一下吧!

项目上使用springboot + spring data jpa进行表的存储与更新。

优点:

基本的代码都不用写了,如findById(),findByName(),save,update,delete等.

缺点:

配置起来注解较多,需要注意的地方很多。由于是自动化,很多时候,没有取得想要的结果,排查起来就很难,需要去抠源码。

最近就遇到一个问题,明明更改了对象字段,调用repository.saveAll()方法,却无论如何都不触发更新,这个对象是一个嵌套对象,基本结构如下:

public class order{		  private Long id;	    	private List<OrderItem> orderItemList;		    private OrderAddress orderAddress}
在调用repository.saveAll( order ) 没有触发更新注:saveAll既可以更新,也可以保存。

根据id是否为null进行判断

代码走过了saveAll,而且也没有报任何错误,单就是不执行更新。

经过多番对比,发现在这次更新中,只修改了orderItemList中的值,而Order中的属性值都没有变动。

随意修改order中的一个值,执行成功了。

JPA应该执行了懒加载,如果主表Order没有任何改变,则不会触发更新,即便子表的值发生了变化。因此在更新子表的时候,一定要修改主表的字段,一般修改modifyTime即可。

标签: #springboot jpa 调用存储过程