我正在尝试使用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” 但是日志会输出新值作为计数。
答案 0 :(得分:0)
我的猜测是您或者再次更改值(在打印日志后,使用另一种方法),或者将其作为事务的一部分运行,该事务在途中某处失败,因此未提交。