2013-08-14 5 views
0

У меня есть следующее свойство на сущности JPA:Можно ли хранить BigDecimal 0,000 в Oracle с 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 (новый BigDecimal («0,000»)); а затем объект сохраняется в базе данных, а затем извлекается из базы данных, значение извлекается, теряя свою точность и масштаб, и просто 0.

Схема базы данных создается JPA/Eclipselink при развертывании веб-приложения.

Мое окружение - EclipseLink 2.3.2.v20111125-r10461, Oracle 11g R2, тонкий драйвер Oracle JDBC OJDBC 1.6.

ответ

0

В базе данных нет разницы между 0 и 0.000, поэтому это не имеет значения.

Не имеет значения, является ли Java тоже. Если вы хотите напечатать bigdecimal с 3 цифрами, просто используйте принтер, который делает это.

Если вы выдаете метод equals() в Java, то не используйте его, вместо этого используйте compareTo().

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