У меня есть функция postgresql, которая читает один входной параметр типа jsonb и возвращает результат как jsonb. Мне удалось найти примеры сопоставления столбцов сущностей, но я не нашел ни одного примера сопоставления выходных / входных параметров. Был бы признателен, если кто-то может помочь через JPA / Hibernate.
PostgreSQL Функция
$$
declare err_context text;
BEGIN
RETURN QUERY
select row_to_json(t)
from
(select a.id as id,
a.location as location,
a.name as name,
a.agg_name as agg_name,
a.order as order
from mydb.mytable a
where a.status='0'
and not exists
(select ua.user_id
from mydb.myuser ua
where ua.user_id=p_userid
and ua.id=a.id)) t;
end
$$
p_userid . это строка в Java Репозиторий
Результирующий набор выводится. это PGobject
код JPA
StoredProcedureQuery procedureQuery = e.createStoredProcedureQuery("mydb.myfunction");
procedureQuery.registerStoredProcedureParameter(1, String.class, ParameterMode.IN);
procedureQuery.setParameter(1, "some_value");
List resultList = procedureQuery.getResultList();
System.out.println(resultList);
ошибка
Caused by: org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111
at org.hibernate.dialect.TypeNames.get(TypeNames.java:71) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.dialect.TypeNames.get(TypeNames.java:103) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:706) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.loader.custom.JdbcResultMetadata.getHibernateType(JdbcResultMetadata.java:100) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.loader.custom.ScalarResultColumnProcessor.performDiscovery(ScalarResultColumnProcessor.java:45) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:494) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.result.internal.OutputsImpl$CustomLoaderExtension.processResultSet(OutputsImpl.java:317) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.result.internal.OutputsImpl.extractResults(OutputsImpl.java:140) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.result.internal.OutputsImpl.extractCurrentResults(OutputsImpl.java:131) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.result.internal.OutputsImpl.access$100(OutputsImpl.java:39) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.result.internal.OutputsImpl$CurrentReturnState.buildOutput(OutputsImpl.java:191) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.result.internal.OutputsImpl$CurrentReturnState.getOutput(OutputsImpl.java:175) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.result.internal.OutputsImpl.getCurrent(OutputsImpl.java:95) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.procedure.internal.ProcedureCallImpl.getResultList(ProcedureCallImpl.java:719) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]