最近在做一个需求,使用的是SpringJPA框架去做的,遇到了一个问题 简单来说就是 我查询出来A表和B表的数据 然后对应的A和B的实体都做了赋值修改,然后我只想修改B表的数据 然后使用仓库repository.save(B)的方法,神奇的事情发生了,最后查看数据的时候 A表和B表的数据都按照我修改赋值的那样 发生了变化 ,也就是说 我再修改B表数据的时候 哪怕不调用A表仓库repository.save(A)的方法 数据库也会把A表的数据做修改。
因为我之前做的控制是
if(条件成立){
A仓库repository.save(A);
}
只要是A的模型发生了改变,你再修改其他表数据修改其他表数据的时候 A表也会一起更新。所以后面我的做法就是把判断提前到了修改A表数据之前 这样修改B表的时候 A表的数据没有发生变化 所以就不会执行update操作,下面我模拟复现一下场景,可以看出来:
1.首先2张表的put_status都是1
A表
B表
2.使用JPA查询出来数据然后都重新赋值为3
3.控制台打印
我这里只更新了B表的数据 但是由于A表的数据我重新给实体赋值了,所以在更新B表的时候A表也同样一起执行了更新。