我有一个Spring/HHibernate/MMySQL设置,需要在数据库中存储BigDecimals。BigDecimals的值可以在小数点后0到16位之间。即,以下所有值均为有效值:
12
543.34
98765.345678
0.000003344332
等等。所以在我的hibernate映射中,我这样做了:
@Column(precision = 32, scale = 16)
这使我能够存储我的BigDecimals并使用MathContext.DECIMAL64
进行数学计算。
然而,当我在MySQL数据库中查看时,我会看到这样的值:
12.0000000000000000
543.3400000000000000
98765.3456780000000000
0.0000033443320000
当我检索它们时,BigDecimal的小数位数都是16,当我使用Spring的Jackson Object Mapper将它们串行化为JSON时,它们会用尾随的零填充。
我想要的是以正确的比例从数据库中获取值。即
12 -> scale 0
543.34 -> scale 2
98765.345678 -> scale 6
0.000003344332 -> scale 12
等等。有什么想法可以做到吗?
在将数据读回Java时,通过更正小数位数,解决了这个问题。MySQL没有对缩放值的处理进行修复。