【问题标题】:How to define BigDecimal rounding strategy for BigDecimal in Spring Data JPA?如何在 Spring Data JPA 中为 BigDecimal 定义 BigDecimal 舍入策略?
【发布时间】:2020-11-22 11:16:48
【问题描述】:

我正在尝试通过 Spring Data JPA (Hibernate) 将支付金额字段保留为 Big Decimal。我已经定义了这样的列:

@Column(精度 = 19,比例 = 3)

但我面临的问题是,在持续舍入数字时使用了 UP 策略。例如,如果我尝试坚持 0.12345,它将节省 0.124。

在这种情况下,我需要向下舍入策略,但我不知道如何设置。我可能可以在构造函数/设置器中为我的大小数设置比例和舍入策略,但这对我来说似乎不是一个好的选择。是否有一些注释或参数需要传递给我的 jpa,以便在舍入时使用向下策略?

【问题讨论】:

    标签: java spring hibernate jpa bigdecimal


    【解决方案1】:

    您可以在这里查看BigDecimal with JPA and flexible scale 以获得一些解决方案。我不认为它可以用一些属性来控制。我想说它也不属于领域层,因为它是定义价格如何四舍五入的“业务逻辑”。

    【讨论】:

      【解决方案2】:

      您要做的是您的业务需求,例如,可以在服务中进行此舍入。就像通过 sql 进行普通插入一样,您必须自己进行舍入。

      把它放在 setter 中绝对没问题,比如:

      public void setNumber(BigDecimal number) {
              this.number = number.setScale(SCALE, RoundingMode.DOWN);
          }
      

      【讨论】:

        猜你喜欢
        • 2014-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多