У меня есть два столбца Integer
в базе данных (derby и db2). Мне нужно разделить их друг с другом внутри JPQL
.
Оба столбца типа Integer
возвращают ноль, если остаток представляет собой десятичное число, например, 0,25
становится 0
и т. д., и это понятно, поскольку тип — int.
В SQL
я мог бы, например,
выбрать CAST (столбец 1 как десятичный (6,2))/CAST (столбец 2 как десятичный (6,2)) из Sometable;
но что эквивалентно JPQL
.
Одним из возможных вариантов (я еще не пробовал) может быть метод @Transient
в сущности, возвращающий тип Decimal и выполняющий это вычисление там, и передающий его в JPQL
но я предпочел бы, чтобы SQL
выполнял эту работу.
Mysql не требует приведения типов на уровне базы данных. Таким образом, поведение для разных СУБД отличается, и это нормально. Но что должен делать JPQL без необходимости использовать собственный запрос, чтобы знать, что для этой операции требуется приведение к десятичной системе.
Добавление диалекта
также не помогло.
Обратите внимание, что это JPA1