【发布时间】:2012-06-12 22:31:03
【问题描述】:
我正在使用 javax.persistence API 和 Hibernate 在 Oracle 11g Express 数据库中创建注释和持久化实体及其属性。
我在一个实体中有以下属性:
@Column(precision = 12, scale = 9)
private BigDecimal weightedScore;
目标是保留一个最多 12 位的十进制值,其中小数点右侧最多为 9 位。
计算weightedScore后,结果是0.1234,但是一旦我用Oracle数据库提交实体,值显示为0.12。
我可以通过使用 EntityManager 对象来查询条目或在 Web 浏览器中直接在 Oracle Application Express (Apex) 界面中查看它来看到这一点。
我应该如何注释我的 BigDecimal 属性,以便正确地保持精度?
注意:我们使用内存中的 HSQL 数据库来运行我们的单元测试,无论有没有 @Column 注释,它都不会遇到精度不足的问题。
更新:
看表描述,weightedScore列的定义是NUMBER(19, 2)。我现在也尝试将注释更改为@Column(columnDefinition="Number(12, 9)"),但这没有效果。有谁知道为什么 Oracle 对这些注释没有响应?
【问题讨论】:
标签: hibernate jpa oracle11g precision bigdecimal