Hibernate BigDecimal精度未与JPA注释一起保留
我正在使用javax.persistence API和Hibernate在Oracle 11g Express数据库中创建注释和持久化实体及其属性 我在实体中具有以下属性:Hibernate BigDecimal精度未与JPA注释一起保留,hibernate,jpa,oracle11g,precision,bigdecimal,Hibernate,Jpa,Oracle11g,Precision,Bigdecimal,我正在使用javax.persistence API和Hibernate在Oracle 11g Express数据库中创建注释和持久化实体及其属性 我在实体中具有以下属性: @Column(precision = 12, scale = 9) private BigDecimal weightedScore; 目标是保留一个最大为12位的十进制值,并且在小数点右侧最多保留9位 计算weightedScore后,结果为0.1234,但一旦我使用Oracle数据库提交实体,该值将显示为0.12 我
@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对这些注释没有反应吗?似乎你不是唯一一个对此有问题的人:我找到了答案。胡萨
我试图通过Oracle Apex接口执行以下查询:
altertable节点修改(加权分数(12,9))代码>
我收到一个错误,指出包含数据的列不能修改为精度或比例更低。这是我的问题
因为我试图用现有数据修改表,所以我需要删除表并重新初始化它,或者修改列以获得更高的精度和比例
我成功地尝试了以下查询:
altertable节点修改(加权分数(26,9))代码>
原因是我想在小数点右边加7位精度,所以我在总精度上加7位,以补偿比例的增加。这样,该列可以将所有现有精度保留在小数点的左侧,同时在右侧添加精度。错误报告还指出,该错误仅适用于大于9223372036854775808的值,并且已修复。