У меня есть табличная функция в MSSQL
CREATE FUNCTION [dbo].[APP_ROLE_FOR_USER_WITH_DETAIL]
(
@ID_USER bigint
)
RETURNS
@retTable TABLE
(
ID_SPECIFICATION bigint,
STATUS varchar(255),
APPLICATION_CODE varchar(255),
APPLICATION_NAME varchar(255),
APPLICATION_ROLE_CODE varchar(255),
APPLICATION_ROLE_NAME varchar(255),
EXTENDED_INFORMATION varchar(255),
DENIED bit,
INHERITED_TABLE_LIST_ID bigint,
INHERITED_ID bigint,
INHERITED_FROM varchar(255),
INHERITED_CODE varchar(255),
INHERITED_NAME varchar(255),
ACTIVE_FROM datetime2(7),
ACTIVE_TO datetime2(7),
STATUS_ASSING varchar(255),
ROW_TYPE varchar(255),
INHERITED_OU_ROOT bigint,
ID_ROLE_VALIDITY bigint null
)
...
И мне нужно вызвать ее из JAVA с помощью менеджера сущностей hibernate.Я знаю, что могу вызвать его с помощью собственного запроса:
getEntityManager().createNativeQuery("select * from dbo.APP_ROLE_FOR_USER_WITH_DETAIL(:par)");
Но мне нужно как-то вызвать его с помощью TypedQuery, а не нативным.Я зарегистрировал некоторую скалярную функцию (которая возвращает простое значение), но я не могу зарегистрировать табличную функцию (или не знаю как)
Мне нужно вызвать что-то вроде:
String hql = "select spec from Specifications spec where spec.id IN (select func.ID_SPECIFICATION from dbo.APP_ROLE_FOR_USER_WITH_DETAIL(:idUser))
TypedQuery<Specification> q = getEntityManager().createQuery(hql,Specification.class);
q.setParameter("idUser", currentUserId);
return q.getResultList();
Мой вопрос: это вообще возможно?