Нужный результат:
Код: Выделить всё
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)
Я думаю, это должно быть что-то вроде: function('cast',generatedAlias0.uuid, as varchar(36)) ( без кавычки). Но я не знаю, как добиться такого результата, чтобы проверить свою теорию.
Как мне вызвать эту функцию CAST?
Подробнее здесь: https://stackoverflow.com/questions/732 ... t-function
Мобильная версия