gpt4 book ai didi

java - Hibernate 错误地映射 BigDecimal

转载 作者:行者123 更新时间:2023-11-30 11:48:11 25 4
gpt4 key购买 nike

我有两个 @Entity,它们都有一个 BigDecimal 字段,如下所示:

在一个模块中:

@Entity
@Table(name = "price_range")
public class PriceRange extends AbstractPersistable<Long> {
@Column(name = "price", precision = 19, scale = 4)
private BigDecimal price;

在另一个模块中:

@Entity
@Table(name = "invoice_position")
public class InvoicePosition extends AbstractPersistable<Long> {
@Column(name = "optimized_cost", precision = 19, scale = 4)
private BigDecimal optimizedCost;

都在我的数据库中创建具有正确精度和小数位数的表:

Table invoice_position
======================
id,optimized_cost, ...
----------------------
optimized_cost decimal(19,4)

Table price_range
=================
id, price, ...
-----------------
price decimal(19,4)

测试前端将值正确保存到数据库中。

但是在单元测试中,两者之一返回一个带有舍入误差的值:

0.520000000000000017763568394002504646778106689453125

(调试器说:sacle = 51 和 precision = 0)

当另一个工作正常时:

0.5200

(调试器说:scale = 4,precision = 4)

这两个值都以相同的方式从数据库中检索(使用 EntityManager 在 JpaRepository 中使用 CriteriaBuilder 构建 CriteriaQuery):

List<Invoice> invoices = invoiceProvider.findAll();
List<PriceRange> priceRanges = priceRangeProvider.findAll();

这可能是什么问题?或者更好:如果实体具有正确的比例和精度以及数据库,哪里会出错?

我在这里很茫然,我在哪里可以找到错误?

最佳答案

好的,根据评论将其标记为已回答,解决方案为 this

关于java - Hibernate 错误地映射 BigDecimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8989230/

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