【问题标题】:Select Top 10 using JPA使用 JPA 选择 Top 10
【发布时间】: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;

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

【问题讨论】:

    标签: sql jpa-2.0


    【解决方案1】:

    我在网上搜索了更多后找到了答案,我不想回答我自己的问题,因为我看起来像一个冲洗者,但是当有答案时论坛不允许我删除这个问题(虽然不是我的问题)

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

    【讨论】:

    • 回答自己的问题并没有错(搜索 MetaSO 进行讨论)。您应该将此标记为已接受的解决方案。
    猜你喜欢
    • 2019-04-25
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多