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 になります。

データベース スキーマは、Web アプリケーションのデプロイ時に JPA/Eclipselink によって作成されます。

私の環境はEclipseLink 2.3.2.v20111125-r10461、Oracle 11g R2、Oracle JDBCシンドライバーOJDBC 1.6です。

4

1 に答える 1

0

0 と 0.000 の間でデータベースに違いはないので、問題にはなりません。

Javaでも構いません。bigdecimal を 3 桁で印刷したい場合は、これを行うプリンターを使用してください。

Java で equals() メソッドを発行する場合は、これを使用せず、代わりに compareTo() を使用してください。

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

于 2013-08-14T15:15:35.953 に答える