2014-07-04 96 views
0

我想根據以下SQL語句使用CriteriaBuilder從JPA中選擇前10條記錄。使用JPA選擇前10名

SELECT * from RECORDTABLE rt 
where rt.LASTUPDATED > startDate 
and rt.LASTUPDATE < endDate 
order by rt.TOTALNUMBER asc; 

到目前爲止,我用Predicates爲日期。

回答

5

我在網上搜索後發現了答案,我不想回答我自己的問題導致我看起來像沖洗,但論壇不允許我刪除這個問題時,有答案(雖然不是我的問題)

CriteriaBuilder cb = em.getCriteriaBuilder(); 
CriteriaQuery<Record> query = cb.createQuery(Record.class); 
Root sm = query.from(Record.class); 

List<Predicate> predicateList = new ArrayList(); 

predicateList.add(cb.greaterThanOrEqualTo(sm.get(COL_TIMESTAMP), startDate)); 
predicateList.add(cb.lessThanOrEqualTo(sm.get(COL_TIMESTAMP), endDate)); 

if (predicateList.size() > 0) 
{ 
    query.where(predicateList.toArray(new Predicate[predicateList.size()])); 
} 
**query.orderBy(cb.desc(sm.get(COL_TOTALRECORD)));** 
List<Record> tempList = em.createQuery(query) 
      .setFirstResult(0) 
      .setMaxResults(10) 
      .getResultList(); 

這就是我一直在尋找

query.orderBy(cb.desc(sm.get(COL_TOTALRECORD))); 
+1

沒有什麼錯回答自己的問題(搜索MetaSO進行討論)。您應該將其標記爲可接受的解決方案。 – Tilo