我正在尝试提取匹配某些谓词的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
}
我在一次交易中联合了很多这样的查询。我如何在这里获得单一结果?我错过了什么吗?
答案 0 :(得分:1)
您可以改用此方法:
Object[] row = (Object[]) query.uniqueResult();
如果查询返回多个结果,则此方法将引发异常
编辑:
最重要的是,您可以使用ResultTransformer
将Object[]
转换为Integer
。这将消除获取结果数组的需要,然后提取它的第一个条目。有关详细信息,请参阅此example