Hibernate - отображение столбца BigDecimal для пользовательского диалекта

используя Hibernate в качестве нашего объектно-реляционного отображения, с собственным диалектом для неясной базы данных.

Сущность, которую яm, извлекаемый из этой базы данных, имеет столбец таким образом:

    @Column(name = "GROSS_WEIGHT", precision = 9, scale = 3)
    private BigDecimal grossWeight;

В базе данных этот столбец определен как числовой с точностью 9 и шкалой 3.

Я вижу SQL, который Hibernate генерирует для извлечения данных, и когда я выполняю тот же запрос с помощью инструмента запросов к базе данных, он возвращает '9,68' для столбца GROSS_WEIGHT.

Однако в сущности, полученной с помощью Hibernate,общий вес' поле содержит значение10'сscale из 0 иprecision из 2!

в обычном диалекте I классая использую ямы пытались переопределить следующие типы столбцов:

        registerColumnType( Types.DECIMAL, "numeric($p,$s)" );
        registerColumnType( Types.DOUBLE, "numeric($p,$s)" );
        registerColumnType( Types.NUMERIC, "numeric($p,$s)" );

но он по-прежнему возвращает только (округленное) целое число.

Это работало в другом месте приложения, где мы получаем объекты из Postgres, используя диалект Postgres.

Любая идея, что я должен делать на диалекте, чтобы я мог получить Hibernate, чтобы правильно установить точность / масштаб полученного BigDecimal?

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

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