获取单个ScrollableResults行

时间:2013-07-31 16:34:11

标签: java hibernate

我正在尝试提取匹配某些谓词的count(*)。每次我使用createSQLQuery时,我发现自己必须按照

的方式编写代码
// skipped code
Query q = session.createSQLQuery("select count(*) from A where id=1");
Scrollable results = q.scroll();

while ( results.next() )
{
    Object[] row = Object[] results.get();
    // Assign it
    String str = row[0];
    //set and persist
}  

我在一次交易中联合了很多这样的查询。我如何在这里获得单一结果?我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

您可以改用此方法:

Object[] row = (Object[]) query.uniqueResult();

如果查询返回多个结果,则此方法将引发异常

编辑:

最重要的是,您可以使用ResultTransformerObject[]转换为Integer。这将消除获取结果数组的需要,然后提取它的第一个条目。有关详细信息,请参阅此example