Критерий JPA — вызов функции Postgres CASTJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Критерий JPA — вызов функции Postgres CAST

Сообщение Anonymous »

Я пытаюсь вызвать функцию Postgres с критериями, но она не работает. Мне нужно использовать предложение LIKE в поле UUID, поэтому сначала мне нужно преобразовать его в VARCHAR.
Нужный результат:

Код: Выделить всё

SELECT * FROM my_table WHERE cast(uuid as varchar(36)) like '%1234%';
Что я делаю в разделе «Критерии»:

Код: Выделить всё

final Path uuidField = from.get("uuid");
var cast = cb.function("cast", String.class, uuidField, cb.literal("as varchar(36)"));
cb.like(cast, String.format("%%%s%%", stringValue));
Генерируемый запрос:

Код: Выделить всё

HQL: select generatedAlias0 from com.MyTable as generatedAlias0 where function('cast', generatedAlias0.uuid, 'as varchar(36)') like '%1234%' order by generatedAlias0.name asc
Ошибка:

Код: Выделить всё

2022-08-08 18:38:48,549 WARN  [io.ver.cor.imp.BlockedThreadChecker] (vertx-blocked-thread-checker) Thread Thread[vert.x-eventloop-thread-9,5,main] has been blocked for 2393 ms, time limit is 2000 ms: io.vertx.core.VertxException: Thread blocked
at antlr.ASTFactory.make(ASTFactory.java:342)
at antlr.ASTFactory.make(ASTFactory.java:352)
at org.hibernate.hql.internal.antlr.HqlBaseParser.jpaFunctionSyntax(HqlBaseParser.java:4633)
at org.hibernate.hql.internal.antlr.HqlBaseParser.primaryExpression(HqlBaseParser.java:1075)
Журнал не такой четкий (я использую Quarkus + Hibernate Reactive), но я подозреваю, что он произошел сбой в базе данных, потому что функция ('cast', сгенерированныйAlias0.uuid, 'as varchar (36)').
Я думаю, это должно быть что-то вроде: function('cast',generatedAlias0.uuid, as varchar(36)) ( без кавычки). Но я не знаю, как добиться такого результата, чтобы проверить свою теорию.
Как мне вызвать эту функцию CAST?

Подробнее здесь: https://stackoverflow.com/questions/732 ... t-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»