Precyzja BigDecimal nie jest zachowywana z adnotacjami JPA
Korzystam z interfejsu API javax.persistence i Hibernate, aby tworzyć adnotacje i utrzymywać elementy i ich atrybuty w bazie danych Oracle 11g Express.
Mam następujący atrybut w obiekcie:
@Column(precision = 12, scale = 9)
private BigDecimal weightedScore;
Celem jest utrzymanie wartości dziesiętnej z maksymalnie 12 cyframi i maksymalnie 9 z tych cyfr po prawej stronie miejsca dziesiętnego.
Po obliczeniuweightedScore
, wynik wynosi 0.1234, ale gdy zatwierdzę obiekt za pomocą bazy danych Oracle, wartość jest wyświetlana jako 0,12.
Widzę to, używając obiektu EntityManager do zapytania o wpis lub wyświetlając go bezpośrednio w interfejsie Oracle Application Express (Apex) w przeglądarce internetowej.
Jak należy opisać mój atrybut BigDecimal, aby precyzja była poprawna?
Uwaga: Używamy bazy danych HSQL w pamięci do uruchamiania naszych testów jednostkowych i nie występuje problem z brakiem precyzji, z lub bez@Column
adnotacja.
Aktualizacja:
Patrząc na opis tabeli, definicjęweightedScore
kolumna jestNUMBER(19, 2)
. Próbowałem teraz zmienić adnotację na@Column(columnDefinition="Number(12, 9)")
, ale to nie przyniosło skutku. Czy ktoś wie, dlaczego Oracle nie odpowiada na te adnotacje?