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