Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate BigDecimal精度未与JPA注释一起保留_Hibernate_Jpa_Oracle11g_Precision_Bigdecimal - Fatal编程技术网

Hibernate BigDecimal精度未与JPA注释一起保留

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 我

我正在使用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对这些注释没有反应吗?

似乎你不是唯一一个对此有问题的人:

我找到了答案。胡萨

我试图通过Oracle Apex接口执行以下查询:

altertable节点修改(加权分数(12,9))

我收到一个错误,指出包含数据的列不能修改为精度或比例更低。这是我的问题

因为我试图用现有数据修改表,所以我需要删除表并重新初始化它,或者修改列以获得更高的精度和比例

我成功地尝试了以下查询:

altertable节点修改(加权分数(26,9))


原因是我想在小数点右边加7位精度,所以我在总精度上加7位,以补偿比例的增加。这样,该列可以将所有现有精度保留在小数点的左侧,同时在右侧添加精度。

错误报告还指出,该错误仅适用于大于9223372036854775808的值,并且已修复。