JPARepository save()不会将所有值更新到DB。但是给结果

时间:2019-03-27 07:44:35

标签: java hibernate spring-boot spring-data-jpa

我正在尝试使用JPARepository save()更新MySQL表的字段。但是save()会更新为null的字段,但不会更新已经具有某些值的字段。

当前数据库中的

个值: 地点:空 件数:2

新值会临时更新 地方:无地方 件数:1

我尝试过 1. save(), 2.使用@Transaction保存和刷新 3.再次获取实体,然后再进行更新。

public Cons updateCons(Cons temp, Cons con) {

Cons tempCons = consRepository.findOneByIdAndConstId(cons.getId(),cons.getConsId());
   // tempCons.setId(cons.getId());

    log.info("before saving cons :{}, count={}",consignment.getConsId(),temp.getItemCount());
    tempCons.setItemCount(temp.getItemCount());
    tempCons.setplaceStatus("Noplace"); // this filed is currently null


    Cons result = consRepository.saveAndFlush(tempCons);
    log.info("after saving cons :{}, count={}",cons.getConsId(),result.getItemCount()); // logs the updated value on itemCount.

}

预期结果:itemcount应该更新为新值 应该使用硬编码值“ Noplace”更新该地点

实际结果:未在db中使用新值更新itemcount。但是地点已更新为“ Noplace”  但是日志会输出新值作为计数。

1 个答案:

答案 0 :(得分:0)

我的猜测是您或者再次更改值(在打印日志后,使用另一种方法),或者将其作为事务的一部分运行,该事务在途中某处失败,因此未提交。