ScrollableResults大小给出重复值

时间:2013-07-26 06:06:41

标签: sql spring hibernate count scrollableresults

我正在使用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。 在此先感谢。

3 个答案:

答案 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将给出结果总数。