【问题标题】:JPARepository save() does not update all values to DB. But gives resultJPARepository save() 不会将所有值更新到 DB。但给出结果
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    相关资源
    最近更新 更多