1

我正在尝试提取匹配某些谓词的计数(*)。每次我使用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
}  

我有许多这样的查询通过一个事务联合起来。我如何在这里获得单个结果?我错过了什么吗?

4

1 回答 1

1

您可以改用此方法:

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

如果查询返回多个结果,该方法会抛出异常

编辑:

最重要的是,您可以使用 aResultTransformer将 转换Object[]Integer. 这将消除获取结果数组然后提取它的第一个条目的需要。有关更多信息,请参阅此示例

于 2013-07-31T16:40:09.637 回答