【发布时间】:2019-03-27 07:44:35
【问题描述】:
我正在尝试使用 JPARepository save() 更新 MySQL 表的字段。但是 save() 会更新为 null 的字段,但不会更新已经有一些值的字段。
当前在 DB 中的值: 地点:空 项目数:2
新值传入 temp 以进行更新 地点:无处 项目数:1
我试过了 1.保存(), 2. saveAndFlush 与@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”更新地点
实际结果:数据库中的 itemcount 未更新为新值。但地点更新为“Noplace” 但是日志会打印新值作为计数。
【问题讨论】:
-
您是否在 saveAndFlush 方法后更改了状态值?此外,最好在整个班级发布有关如何处理交易的信息
标签: java hibernate spring-boot spring-data-jpa