2015-09-10 2 views
0

У меня есть класс, который возвращает все объекты в запросе, ограниченные максимальным и мин:Hibernate в `не setFirstResult` работает

@SuppressWarnings("unchecked") 
public static <E> List<E> getAll(Class<E> klass, Integer startAt) { 
    startAt = (startAt == null) ? 0 : startAt; 
    int endAt = startAt + Constant.API_MAX_RESULTS; 
    return (List<E>) HibernateUtil.getCurrentSession() 
     .createCriteria(klass) 
     .setFirstResult(startAt) 
     .setMaxResults(endAt) 
     .list(); 
} 

Где Constant.API_MAX_RESULTS является 100. Так, например, если я хочу, 100-199 генов, я буду называть:

getAll(Gene.class, 100); 

Если я печатаю startAt и endAt, я правильно вижу 100 и 200, но то, что я на самом деле получить возвращенное 0-199 включительно гены.

Когда я настроить Hibernate для отображения SQL, я вижу это:

select this_.id as id8_0_, ... from gene this_ limit ?, ? 

Если значения будут установлены на limit? Почему не работает нижняя граница?

+1

предела 100,200 вернут вам 200 записей не 100. Может быть путаница происходит из этого факта. – Franck

ответ

3

Hibernate's show_sql показывает SQL с записями параметров, поэтому он не показывает фактические значения. (Однако он зарегистрирован на уровне TRACE).

У вас проблема в том, что вы не поняли, что делает setMaxResults(), он устанавливает максимальную скорость. количество товаров.

1

.setMaxResults является количеством записей в максимуме, что вы хотите, чтобы вернуться, так что я верю, что вы хотите setMaxResults 100.

Смежные вопросы