You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Repository save()方法未返回数据库四舍五入后的值问题咨询

结论:这不属于Bug,是ORM框架的常规行为

原因说明:

  • ORM框架(比如JPA、MyBatis-Plus等)的save()方法,默认返回的是你传入的原内存对象实例,仅会补充数据库自动生成的字段(比如示例中的自增ID),不会主动修改你传入的其他属性值。
  • 你传入的newObj中price为12.555,虽然数据库因为DECIMAL(10,2)的约束自动做了四舍五入存储为12.56,但ORM不会同步修改内存中对象的price属性。
  • 如果需要获取与数据库完全一致的实体数据,你需要主动执行以下操作之一:
    • 调用ORM的refresh()方法,从数据库重新加载实体属性
    • 调用saveAndFlush()后,再通过ID重新查询该实体

示例代码与表结构

数据表结构

CREATE TABLE OBJ(
    ID INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(30) NOT NULL,
    DESCRIPTION VARCHAR(200) NOT NULL,
    PRICE DECIMAL(10,2) NOT NULL
);

执行代码

Obj newObj = new Obj("obj name", "brief description", 12.555);
repository.save(newObj);
// 此时newObj的price还是12.555,需手动刷新或重新查询

内容的提问来源于stack exchange,提问作者ATLAS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:30:55