gpt4 book ai didi

hibernate - 使用 DbUnit 将 BigDecimal 数据放入 HSQLDB 测试数据库

转载 作者:行者123 更新时间:2023-11-28 19:49:44 26 4
gpt4 key购买 nike

我在后端使用 Hibernate JPA。我正在使用 JUnit 和 DBUnit 编写单元测试,以将一组数据插入内存中的 HSQL 数据库。

我的数据集包含:

<order_line order_line_id="1" quantity="2" discount_price="0.3"/>

它映射到 OrderLine Java 对象,其中 discount_price 列定义为:

@Column(name = "discount_price", precision = 12, scale = 2)
private BigDecimal discountPrice;

但是,当我运行我的测试用例并断言返回的折扣价等于 0.3 时,断言失败并表示存储的值为 0。如果我将数据集中的 discount_price 更改为 0.9,它会四舍五入为 1 .

我已经检查以确保 HSQLDB 没有进行舍入,这绝对不是因为我可以使用 Java 代码插入一个订单行对象,其值类似于 5.3,并且它工作正常。

对我来说,似乎 DBUtils 出于某种原因四舍五入了我定义的数字。有什么办法可以强制这种情况不发生吗?谁能解释为什么它会这样做?

谢谢!

最佳答案

我遇到了这个问题,因为我遇到了类似的问题,不幸的是,在我当前的设置中,我无法升级 hibernate 。所以我找到了一个不同的解决方案来解决这个问题而不需要升级 hibernate 。认为分享不会有害。您只需扩展 HSQLDialect

public class HSQLNumericWithPrecisionDialect extends HSQLDialect {
public HSQLNumericWithPrecisionDialect() {
super();
registerColumnType( Types.NUMERIC, "numeric($p, $s)" );
}
}

关于hibernate - 使用 DbUnit 将 BigDecimal 数据放入 HSQLDB 测试数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2872194/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com