У меня есть этот столбец в моем Oracle 11g, отображаемый как NUMBER (21,20), который отображается в Hibernate как:
@Column(name = "PESO", precision = 21, scale = 20, nullable = false)
public BigDecimal getWeight() {
return weight;
}
Для конкретной записи, для которой значение столбца составляет 0,493, я получаю BigDecimal со значением 0,49299999999. Кажется, что где-то есть потеря точности из-за (возможно) преобразования Double или Float, но я не мог отследить это с помощью простого модульного теста вроде этого:
Double d = new Double("0.493");
System.out.println((d));
Любой вариант этого кода с использованием Float, BigDecimal и разные конструкторы дают один и тот же результат: «0,493» ... Любой намек на то, как мне сопоставить столбец, чтобы избежать таких проблем? Я использую Hibernate 3.5.6 с аннотациями JPA и Hibernate API (то есть сеансом, а не EntityManager)