我正在使用hibernate和spring进行应用程序。我试图通过使用ScrollableResults获取查询得到的结果,但由于查询包含大量连接(内连接),结果包含重复多次的id。当我使用它来知道从数据库返回的唯一行(或唯一ID)的总数时,这会给ScrollableResults带来问题。请帮忙。代码的某些部分如下:
StringBuffer queryBuf = new StringBuffer("Some SQL query with lots of Joins");
Query query = getSession().createSQLQuery(queryBuf.toString());
query.setReadOnly(true);
ScrollableResults results = query.scroll();
if (results.isLast() == false)
results.last();
int total = results.getRowNumber() + 1;
logger.debug(">>>>>>TOTAL COUNT<<<<<< = {}", total);
总计数为1440,但数据库中的实际唯一行数为504。 在此先感谢。
答案 0 :(得分:1)
你可以尝试
Integer count= ((Long)query.uniqueResult()).intValue();
答案 1 :(得分:0)
不幸的是,getRowNumber并没有给出结果的大小或数量,而是结果的当前位置。 ScrollableResults没有提供开箱即用的结果数量的方法。
我指的是ScrollableResults休眠版本5.4。
作为解决方法,您可以尝试
Long l_resultsCount = 0L;
while(results.next()) {
l_resultsCount++;
}
答案 2 :(得分:0)
getRowNumber()
给出当前行的编号。
致电last()
,然后致电getRowNumber()+1
将给出结果总数。