我正在尝试使用JPARepository MySQL ()更新保存表的字段。但是save()会更新为null的字段,但不会更新已经有一些值的字段。
当前在DB: place : null项计数:2中的值
新值传入temp以更新place : Noplace itemcount :1
我已经尝试了1. save(),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应使用新值更新,place应使用硬编码值"Noplace“更新
实际结果:数据库中的itemcount未更新为新值。但是place是用"Noplace“更新的,但log会将新值打印为count。
发布于 2019-03-27 16:58:37
我的猜测是,您要么再次更改该值(在打印日志之后,在另一种方法中),要么将其作为事务的一部分运行,该事务在过程中的某处失败,因此未被提交。
https://stackoverflow.com/questions/55372091
复制相似问题