0

我在 JPA 实体上有以下属性:

@NotNull
@DecimalMin("0.000")
@DecimalMax("1.000")
@Digits(integer = 1, fraction = 3)
@Column(nullable = false, precision = 4, scale = 3)
private BigDecimal confidence;

public BigDecimal getConfidence() {
    return this.confidence;
}

public void setConfidence(BigDecimal confidence) {
    this.confidence = confidence;
}

如果置信度设置为“0.000”,例如:setConfidence(new BigDecimal("0.000")); 然后实体被持久化到数据库,然后从数据库中取回,取回的值失去了它的精度和规模,只是0。

数据库模式由 JPA/Eclipselink 在部署 Web 应用程序时创建。

我的环境是EclipseLink 2.3.2.v20111125-r10461,Oracle 11g R2,Oracle JDBC Thin driver OJDBC 1.6。

4

1 回答 1

0

数据库中0和0.000之间没有区别,所以应该没关系。

Java也应该没关系。如果您想打印 3 位数字的 bigdecimal,那么只需使用执行此操作的打印机。

如果您发出的是 Java 中的 equals() 方法,则不要使用它,而是使用 compareTo() 。

http://www.opentaps.org/docs/index.php/How_to_Use_Java_BigDecimal:_A_Tutorial

于 2013-08-14T15:15:35.953 回答