[英]Hibernate's setFirstResult() issue with Oracle jdbc driver
[英]Hibernate's `setFirstResult` not working
我有一個可返回查詢中所有實體的類,受最大和最小限制:
@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
? 為什么下限不起作用?
Hibernate的show_sql
顯示帶有參數占位符的SQL,因此它不顯示實際值。 (盡管它是在TRACE級別記錄的)。
您的問題是您不了解setMaxResults()
作用,它設置了最大值。 獲取的項目數。
.setMaxResults是要返回的最大記錄數,因此我相信您希望setMaxResults為100。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.