gpt4 book ai didi

java - 如何从计算行数的 SQL 查询开始正确实现 Hibernate SQL 查询?

转载 作者:行者123 更新时间:2023-11-30 07:32:40 24 4
gpt4 key购买 nike

我是 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 并最终获得一个带有检索到的对象的列表(我认为 Hibernate 创建为类似于 ArrayList 的东西)。

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

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

最佳答案

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

String sql = "SELECT count(*) ...";
SQLQuery query = session.createSQLQuery(sql);
// set parameters...
int count = ((Number)query.uniqueResult()).intValue();

关于java - 如何从计算行数的 SQL 查询开始正确实现 Hibernate SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35865217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com