我正在使用Hibernate作为我的JPA提供商,我有一个" PRICE" Sybase SQLAnywhere 16数据库中的列,它被定义为十进制(19,4)。相关数据声明为:
@Basic(optional = false)
@NotNull
@Column(name = "PRICE", precision = 19, scale = 4)
private BigDecimal bdPrice;
然后我用:
加载数据值...
final BigDecimal bdTest = new BigDecimal("14276.5257");
bdTest.setScale(4,BigDecimal.ROUND_HALF_EVEN);
table.setBdPrice(bdTest);
然后我使用em.persist()来获取写入数据库的数据。将新行写入数据库,并使用Sybase数据库"编辑器"应用程序,我可以看到String列是正确的,但价格列显示: 14276.0000
我已经尝试将数据库列定义为double和money,并且使用double我得到14276并且有钱我得到14276.0000。
另外,如果我手动(使用Sybase数据库"编辑器" app)加载PRICE,比如11257.6914我可以使用Hibernate获取行,并且getBdPrice()返回11257.6914的确切值,所以问题ony发生在写作上。
有人能告诉我这里出了什么问题吗?如何将十进制数字输入数据库?
谢谢。