crit.setProjection(Projection.rowCount()) возвращает пустой список

Я получаю 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 ответ

Решение

В этом случае вы можете просто использовать:

crResult.uniqueResult()

Я не думаю, что вы можете получить нулевой список, но вы можете получить список с 0 элементами в некоторых случаях, в которых нет .get(0) Индекс и выбрасывая ошибку, которую вы получаете...

Вы также можете сначала проверить длину списка, а затем получить элемент:

List<?> list= crResult.list();
if(list.size>0)
    countResults = (Integer)list().get(0);
Другие вопросы по тегам