我想使用JPA中的 CriteriaBuilder ,根据下面的SQL语句选择前10条记录。
SELECT * from RECORDTABLE rt
where rt.LASTUPDATED > startDate
and rt.LASTUPDATE < endDate
order by rt.TOTALNUMBER asc;
到目前为止,我在日期之间使用谓词。
答案 0 :(得分: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)));