使用JPA选择Top 10

时间:2014-07-04 07:31:09

标签: sql jpa-2.0

我想使用JPA中的 CriteriaBuilder ,根据下面的SQL语句选择前10条记录。

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

到目前为止,我在日期之间使用谓词。

1 个答案:

答案 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)));