为什么Hibernate在BigDecimal中将所有小数点设置为零?

时间:2014-09-02 21:28:36

标签: hibernate jpa sybase-asa

我正在使用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发生在写作上。

有人能告诉我这里出了什么问题吗?如何将十进制数字输入数据库?

谢谢。

0 个答案:

没有答案