У меня есть postgreSQL пользовательская функция, которая требует один атрибут типа "my_entity".
В SQL Я могу вызвать эту функцию нормально:
select my_function(t) from my_entity t;
Теперь, что я нужно вызвать эту же функцию с помощью CriteriaQuery, но при попытке hibernate генерирует оператор SQL с my_table.id вместо самого кортежа:
select my_function(my_entity0_.id) from my_entity my_entity0_;
Мой код:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<MyEntity> cq = cb.createQuery(MyEntity.class);
Root<MyEntity> root = cq.from(MyEntity.class);
Expression<String> myFunction= cb.function("my_function", String.class, root);
cq.select(myFunction);
return em.createQuery(cq).getResultList();
Функция:
CREATE OR REPLACE FUNCTION my_function(
IN "T" my_entity)
RETURNS character varying
LANGUAGE 'plpgsql'
AS $BODY$BEGIN
... some logic ...
RETURN some_calculated_result;
END;$BODY$;
Как правильно передать аргумент этой функции?