我在 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 存储库类中呢?