[英]Why is Hibernate setting all decimal points to zero in a BigDecimal?
我将Hibernate用作JPA提供程序,并且在Sybase SQLAnywhere 16数据库中有一个“ PRICE”列,其定义为十进制(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列正确,但是Price列显示:14276.0000
我尝试将数据库列定义为double和money,使用double可获得14276,使用money可获得14276.0000。
另外,如果我手动(使用Sybase数据库“编辑器”应用程序)将PRICE加载为11257.6914,则可以使用Hibernate来获取行,并且getBdPrice()返回的确切值为11257.6914,因此问题仅在写入时发生。
有人可以告诉我这里出了什么问题吗? 如何将十进制数字输入数据库?
谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.