Точность BigDecimal не сохраняется с аннотациями JPA

Я использую 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 не отвечает на эти аннотации?

Ответы на вопрос(2)

Решение Вопроса

Я попытался выполнить следующий запрос через интерфейс Oracle Apex:

alter table NODE modify (WEIGHTEDSCORE NUMBER(12, 9));

Я получил сообщение о том, что столбец, содержащий данные, не может быть изменен, чтобы иметь меньшую точность или меньший масштаб. Это была моя проблема!

Поскольку я пытался изменить таблицу с существующими данными, мне нужно было либо удалить таблицу и повторно инициализировать ее, либо изменить столбец, чтобы иметь только большую точность и масштаб.

Я попытался следующий запрос с успехом:

alter table NODE modify (WEIGHTEDSCORE NUMBER(26, 9));

Причина в том, что я хочу добавить 7 знаков точности справа от десятичного знака, поэтому я добавляю 7 к общей точности, чтобы компенсировать увеличение масштаба. Таким образом, столбец может сохранить всю существующую точность слева от десятичной точки, в то же время добавляя точность справа.

Ваш ответ на вопрос