【发布时间】:2014-08-25 11:24:29
【问题描述】:
我想使用 JPA 中的 CriteriaBuilder 根据下面的 SQL 语句选择前 10 条记录。
SELECT * from RECORDTABLE rt
where rt.LASTUPDATED > startDate
and rt.LASTUPDATE < endDate
order by rt.TOTALNUMBER asc;
到目前为止,我在日期之间使用谓词。
【问题讨论】:
我想使用 JPA 中的 CriteriaBuilder 根据下面的 SQL 语句选择前 10 条记录。
SELECT * from RECORDTABLE rt
where rt.LASTUPDATED > startDate
and rt.LASTUPDATE < endDate
order by rt.TOTALNUMBER asc;
到目前为止,我在日期之间使用谓词。
【问题讨论】:
我在网上搜索了更多后找到了答案,我不想回答我自己的问题,因为我看起来像一个冲洗者,但是当有答案时论坛不允许我删除这个问题(虽然不是我的问题)
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)));
【讨论】: