1

我在 Hibernate 中绝对是新手,我有以下问题。

我有这个标准的 SQL 查询:

SELECT count(*) 
FROM TID003_ANAGEDIFICIO anagraficaEdificio 
INNER JOIN TID002_CANDIDATURA candidatura 
  ON (candidatura.PRG_PAR = anagraficaEdificio.PRG_PAR AND candidatura.PRG_CAN = anagraficaEdificio.PRG_CAN)
INNER JOIN TID001_ANAGPARTECIPA anagPartecipa ON(anagPartecipa.PRG_PAR = candidatura.PRG_PAR)
INNER JOIN anagrafiche.TPG1029_PROVNUOIST provNuovIst ON (provNuovIst.COD_PRV_NIS = anagPartecipa.COD_PRV_NIS)
WHERE anagraficaEdificio.FLG_GRA = 1 AND provNuovIst.COD_REG = "SI";

这工作正常并返回一个整数

要知道的重要一点是,在此查询中,唯一可以更改的参数(由用户在 web 应用程序的前端插入)是最后一个(这个:provNuovIst.COD_REG = "SI")。

因此,我正在使用的应用程序使用 Hibernate 并且要求说我必须使用Hibernate Native SQL来实现这个查询,我找到了这个教程:

http://www.tutorialspoint.com/hibernate/hibernate_native_sql.htm

显示这个例子:

String sql = "SELECT * FROM EMPLOYEE WHERE id = :employee_id";
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(Employee.class);
query.setParameter("employee_id", 10);
List results = query.list();

根据我的理解(如果我的断言错误,请纠正我),这涉及到使用Employee模型类。所以之前的查询首先定义查询(使用:param_name参数的语法),然后创建一个SQLQuery Hibernate 对象,添加用于结果的类,设置前面的参数 neam 最后获得一个 List(我认为 Hibernate 创建类似于ArrayList)与检索到的对象。

我的问题是我只需要获得一个数值(因为我有一个SELECT count(*),所以我将获得一个整数值而不是一组行)。

那么如何正确使用Hibernate Native SQL将我的 SQL 查询实现到我的 Hibernate 存储库类中呢?

4

1 回答 1

1

用于SQLQuery.uniqueResult从查询中检索单个值:

String sql = "SELECT count(*) ...";
SQLQuery query = session.createSQLQuery(sql);
// set parameters...
int count = ((Number)query.uniqueResult()).intValue();
于 2016-03-08T10:56:37.207 回答