0

我正在使用hibernate和spring开发应用程序。我正在尝试使用 ScrollableResults 获取查询获得的结果计数,但由于查询包含大量连接(内部连接),结果包含重复多次的 id。当我使用 ScrollableResults 来了解从数据库返回的唯一行(或唯一 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。提前致谢。

4

3 回答 3

1

你可以试试

Integer count= ((Long)query.uniqueResult()).intValue();
于 2013-07-26T08:38:33.133 回答
0

不幸的是,getRowNumber不会给您结果的大小或数量,而是结果中的当前位置。ScrollableResults 不提供直接获取结果数量的方法。

我指的是ScrollableResults Hibernate 5.4 版。

作为一种解决方法,您可以尝试

Long l_resultsCount = 0L;
while(results.next()) {
    l_resultsCount++;
}
于 2020-04-22T10:54:40.563 回答
0

getRowNumber()给出当前行的编号. 调用last()之后getRowNumber()+1会给出结果的总数。

于 2020-11-11T14:53:17.720 回答