gpt4 book ai didi

java - 10 位 BigDecimal 无法保存在 NUMBER(10, 2) 列中

转载 作者:行者123 更新时间:2023-11-30 02:35:14 26 4
gpt4 key购买 nike

在 Oracle 12 数据库中,我的列之一是用 NUMBER(10,2) 定义的。目标是存储这样的数字:12345678.12。实际上,感谢 Oracle SQL Developer,我可以存储这样的数字,因此格式是匹配的。

通过我的 Hibernate-Java 应用程序,当我更新包含以下值的实体时,它会起作用:

1.12
12.12
123.12
1234.12
12345.12
123456.12

但使用以下内容时,我收到错误

1234567.12
12345678.12

ORA-01438: value larger than specified precision allowed for this column

它看起来像一个 NUMBER(8, 2)...

该字段位于 @Embeddable 类中,类型为 BigDecimal,没有任何字段注释:

@Entity
@Table(...)
public class ClassA implements Serializable {

@Embedded
private ClassB bObject;
}

@Embeddable
public class ClassB implements Serializable {

@Embedded
private ClassC cObject;
}

@Embeddable
public class ClassC implements Serializable {

private BigDecimal myField;
}

还有其他东西可以覆盖我的列定义吗?

最佳答案

小数类型中的第一个数字是精度,第二个数字是小数位数。
来自 Oracle 的文档:

You can specify the precision (the total number of digits, both to the left and the right of the decimal point) and the scale (the number of digits of the fractional component).

如果小数前有 10 位数字,则需要 DECIMAL(12,2)

您看到的错误来自 Oracle,而不是 Hibernate,因此我怀疑更改实体配置能否解决您的问题。

关于java - 10 位 BigDecimal 无法保存在 NUMBER(10, 2) 列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43276271/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com