mam tę kolumnę w moim Oracle 11g odwzorowany jako numer (21,20), który jest odwzorowany w Hibernate jako:Hibernate utrata precyzji wyników podczas mapowania numeru (22,21) do BigDecimal
@Column(name = "PESO", precision = 21, scale = 20, nullable = false)
public BigDecimal getWeight() {
return weight;
}
Dla konkretnego rekordu, dla którego wartość kolumny wynosi 0,443, otrzymuję BigDecimal, którego wartość wynosi 0,49299999999. Wydaje się, że gdzieś tam jest utrata dokładności należytym (być może) do podwójnego lub Float konwersji, ale nie mogłem śledzić go za pomocą prostego testu jednostkowego jak ten:
Double d = new Double("0.493");
System.out.println((d));
dowolny wariant tego kodeksu za pomocą Float, BigDecimal i różnych konstruktorów daje taki sam wynik: "0.493" ... Jakąkolwiek wskazówkę, jak mam odwzorować kolumnę, aby uniknąć takich problemów? Używam Hibernacja 3.5.6, z adnotacjami WZP i Hibernacja API (czyli sesja i nie EntityManager)
wydaje się, że to nie był błąd hibernacji ... Jest to całkowicie na SquirrelSql, który wyświetla 0.493 dla wartości 0.49299999999 ... Wartość zawsze była, zarówno w pliku "źródło", zarówno w bazie danych , jak raporty SqlDeveloper. –