我在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调用它。 我知道可以使用本机查询来调用它:
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();
我的问题是: 甚至有可能吗?