如何将表值函数映射到休眠类型的查询

时间:2019-06-10 11:57:07

标签: hibernate java-ee hibernate-entitymanager

我在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();

我的问题是: 甚至有可能吗?

0 个答案:

没有答案