Hibernate DB2JDBC驱动程序截断十进制数

Hibernate DB2JDBC驱动程序截断十进制数,hibernate,jdbc,db2,Hibernate,Jdbc,Db2,DB2的JDBC驱动程序似乎正在截断数字/十进制字段的精度。我在销售表中定义了以下字段: 十进制金额(16,16) 然后,我执行以下insert语句: 插入销售(金额)值(14.12345678) 如果使用DB2Control Center中的查询工具进行查询,则得到14.1234567800000 如果我使用Squirrel(一个使用DB2的JDBC驱动程序连接到数据库的DB客户机)进行操作,我得到的是14.12346 这让我相信JDBC驱动程序正在截断结果的精度。有没有办法配置JDBC驱动程

DB2的JDBC驱动程序似乎正在截断数字/十进制字段的精度。我在销售表中定义了以下字段:

十进制金额(16,16)

然后,我执行以下insert语句:

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

如果使用DB2Control Center中的查询工具进行查询,则得到14.1234567800000

如果我使用Squirrel(一个使用DB2的JDBC驱动程序连接到数据库的DB客户机)进行操作,我得到的是14.12346


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

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

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

您可以尝试在列定义中配置它。
@列(精度=16,刻度=8)
用于
BigDecimal
字段

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

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


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

A
decimal(16,16)
有点奇怪,14.1234567890123456不合适(至少A是
decimal(18,16)
).Mark和Nayan是对的。该值不能放在DB2.DECIMAL(16,16)中的DECIMAL(16,16)列中小数点左边没有数字。俗话说,你不能把10磅的uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu10磅放进一个5磅的袋子。也许你在这里打错了?是的。我实际上误解了精度在小数点之前,小数点之后。我们实际的DB表有小数点(19,8).在指定刻度和精度后,它工作正常。