我应该使用什么PostgreSQL列类型来存储Java BigDecimal?
请参阅PostgreSQL datatypes - 也许是Numeric,它可以作为任意精度类型(这是PostgreSQL扩展)。
...没有任何精度或比例创建一个列,其中可以存储任何精度和比例的数值,直到精度的实现限制。
但我并不完全确定“精度的实施限制”是什么。从未尝试过真正的大数字。如果达到限制,则可以回退到text
。但是,我怀疑在此之前会有重大的其他问题;-)如果你想存储更少,那么指定numeric
的精度和/或比例。
编辑为sjr指出,限制是1000个十进制数字的精度(来自同一个链接):
数字类型可以存储最多1000位精度的数字[在currentl实现中]并完全执行计算。特别建议在需要准确性的情况下存储货币金额和其他数量......
如果需要更高的精度 - 尽管手头有更大的问题 - 那么数字列将不适合(单独)。但这实际上更像是一种非常极端的“假设”,并且可能不起限制作用。
只需将Java映射用于常见的SQL数据类型即可。在这种情况下,您可以使用NUMERIC或DECIMAL。