DB2 JDBC驱动程序截断十进制

时间:2013-04-09 23:59:10

标签: hibernate jdbc db2

DB2的JDBC驱动程序似乎截断了Numeric / Decimal字段的精度。我在SALES表中定义了以下字段:

AMOUNT AS DECIMAL(16,16)

然后我执行以下插入语句:

插入销售(金额)价值(14.12345678)

如果我使用DB2 Control Center中的查询工具进行查询,则会得到14.1234567800000000。

如果我使用Squirrel(一个使用DB2的JDBC驱动程序连接到数据库的数据库客户端)来做这件事,我得到14.12346。当我使用Hibernate从Java代码执行相同操作时也会发生同样的情况。

这让我相信JDBC驱动程序正在截断结果的精度。有没有办法配置JDBC驱动程序以防止这种情况?我已经看到JDBC驱动程序的JDBC选项,但似乎没有描述影响它的那个。

1 个答案:

答案 0 :(得分:1)

如果记录正确地插入到数据库中,那么在获取时,它可能是隐式格式化/截断的。

使用Toad for Oracle检索记录时遇到类似问题。然后我手动配置首选项以使其正确显示,但不熟悉DB2。

您可以尝试在列定义中配置它。 @Column(precision=16, scale=8)字段为BigDecimal

  

precision:十进制(精确数字)列的精度。 (仅在使用十进制列时适用。)

     

比例:十进制(精确数字)列的比例。 (仅在使用十进制列时适用。)

精度是总位数,刻度是小数点右边的位数。尝试更改它们的值,目前似乎不合适。