MySQL/Spring 环境中的 BigDecimal 标度和尾随零
BigDecimal scale and trailing Zeros in MySQL/Spring environment
我有一个 Spring/Hibernate/MySQL 设置,我需要在其中将 BigDecimals 存储在数据库中。 BigDecimals 的值可以从 0 到 16 位小数。 IE。以下所有都是有效值:
12
543.34
98765.345678
0.000003344332
等所以在我的休眠映射中我这样做了:
@Column(precision = 32, scale = 16)
这让我可以存储我的 BigDecimals 并使用 MathContext.DECIMAL64
进行数学计算。
然而,当我查看 MySQL 数据库时,我看到如下值:
12.0000000000000000
543.3400000000000000
98765.3456780000000000
0.0000033443320000
当我检索它们时,BigDecimals 的比例均为 16,当我使用 Spring 的 Jackson Object Mapper 将它们序列化为 JSON 时,它们被填充为尾随零。
我想要的是以正确的比例从数据库中取回值。 IE。
12 -> scale 0
543.34 -> scale 2
98765.345678 -> scale 6
0.000003344332 -> scale 12
等知道如何做到这一点吗?
已设法通过在将数据读回 Java 时更正比例来解决此问题。缩放值的处理没有 MySQL 修复。
我有一个 Spring/Hibernate/MySQL 设置,我需要在其中将 BigDecimals 存储在数据库中。 BigDecimals 的值可以从 0 到 16 位小数。 IE。以下所有都是有效值:
12
543.34
98765.345678
0.000003344332
等所以在我的休眠映射中我这样做了:
@Column(precision = 32, scale = 16)
这让我可以存储我的 BigDecimals 并使用 MathContext.DECIMAL64
进行数学计算。
然而,当我查看 MySQL 数据库时,我看到如下值:
12.0000000000000000
543.3400000000000000
98765.3456780000000000
0.0000033443320000
当我检索它们时,BigDecimals 的比例均为 16,当我使用 Spring 的 Jackson Object Mapper 将它们序列化为 JSON 时,它们被填充为尾随零。
我想要的是以正确的比例从数据库中取回值。 IE。
12 -> scale 0
543.34 -> scale 2
98765.345678 -> scale 6
0.000003344332 -> scale 12
等知道如何做到这一点吗?
已设法通过在将数据读回 Java 时更正比例来解决此问题。缩放值的处理没有 MySQL 修复。