criteria.setProjection(Projections.rowCount())返回空列表

时间:2013-05-30 17:04:19

标签: java hibernate criteria projection indexoutofboundsexception

我在执行此代码时获得java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 有时

Criteria crResult = getSession().createCriteria(XXX.class);
[...]
crResult.setProjection(Projections.rowCount());
Integer countResults = ((Integer)crResult.list().get(0)); // <---This gives the error

是否有crResult.list()可以返回空列表的情况?

(只是一个澄清,我不是在谈论收到一个出现0结果的列表,我正在谈论收到一个空列表

谢谢!

1 个答案:

答案 0 :(得分:0)

在这种情况下,你可以使用:

crResult.uniqueResult()

我不认为你可以获得一个空列表,但在某些情况下你可以得到一个包含0项的列表,其中没有.get(0)索引并抛出你得到的错误......

您也可以先检查列表长度,然后获取项目:

List<?> list= crResult.list();
if(list.size>0)
    countResults = (Integer)list().get(0);