Я использую API javax.persistence и Hibernate для создания аннотаций и сохраняющихся сущностей и их атрибутов в базе данных Oracle 11g Express.BigDecimal точность не сохраняется с аннотациями JPA
У меня есть следующий атрибут в объекте:
@Column(precision = 12, scale = 9)
private BigDecimal weightedScore;
Цель состоит в том, чтобы оставаться десятичное значение максимум 12 цифр и максимум 9 из этих цифр справа от десятичной точки.
После вычисления weightedScore
результат равен 0,1234, но как только я фиксирую объект с базой данных Oracle, значение отображается как 0.12.
Это можно увидеть, используя объект EntityManager для запроса записи или путем непосредственного просмотра в интерфейсе Oracle Application Express (Apex) в веб-браузере.
Как я должен аннотировать свой атрибут BigDecimal, чтобы точность сохранялась правильно?
Примечание: Мы используем базу данных HSQL в памяти для выполнения наших модульных тестов и не испытываем проблемы с отсутствием точности с аннотацией @Column
или без нее.
Update:
Глядя на описание таблицы, определение weightedScore
столбца NUMBER(19, 2)
. Я также попытался изменить аннотацию на @Column(columnDefinition="Number(12, 9)")
, но это не повлияло. Кто-нибудь знает, почему Oracle не отвечает на эти аннотации?
В отчете об ошибке также говорится, что ошибка применяется только к значениям, превышающим 9,223,372,036,854,775,808, и что это было _fixed_. – Ben