Я использую Hibernate как наше объектно-реляционное сопоставление с пользовательским диалектом для неясной базы данных.Hibernate - сопоставление столбцов BigDecimal для пользовательского диалекта
Платформа Entity Я извлечения из этой базы данных имеет столбец, таким образом:
@Column(name = "GROSS_WEIGHT", precision = 9, scale = 3)
private BigDecimal grossWeight;
База данных содержит этот столбец, определенный как числовые с точностью до 9 и масштаба 3.
я могу см. SQL, который Hibernate генерирует для извлечения данных, и когда я выполняю тот же запрос с помощью инструмента запроса базы данных, он возвращает «9.68» для столбца GROSS_WEIGHT.
Однако в объекте, полученном Hibernate, поле 'grossWeight' содержит значение '10', с scale
из 0 и precision
из 2!
в пользовательском классе диалекте, я использую я пытался перекрывая следующие типы столбцов:
registerColumnType(Types.DECIMAL, "numeric($p,$s)");
registerColumnType(Types.DOUBLE, "numeric($p,$s)");
registerColumnType(Types.NUMERIC, "numeric($p,$s)");
но замирает возвращает только (округленный) целое число.
Это работало в другом месте приложения, где мы извлекаем объекты из Postgres, используя диалект Postgres.
Любая идея, что я должен делать на диалекте, чтобы я мог заставить Hibernate правильно установить точность/масштаб получаемого BigDecimal?
Какая база данных и какой драйвер/версия JDBC? –
«База данных» на самом деле является проприетарным движком RDBMS под названием «Genesis» поверх индексированных файлов Vision Acobobol (теперь MicroFocus). Драйвер называется «Vortex». И драйвер, и двигатель написаны [Trifox Inc] (http://www.trifox.com/index.html), но проданы/распространены [MicroFocus] (https://www.microfocus.com/media/data -sheet/acuxdbc_tcm6-1136.pdf) – DuncanKinnear