使用Oracle rownum和order by的Hibernate NamedQuery

时间:2013-04-25 17:57:49

标签: hibernate jpa

我正在使用JPA Hibernate实现,我正在尝试创建一个由数据排序的命名查询,然后只抓取前两行。我已经尝试了以下,但它无效。有任何想法吗?我正在使用Oracle DBMS。

 @NamedQuery(name = "Test.getLastTwoRecords", 
        query = "SELECT a FROM Test a WHERE rownum < 3 in (SELECT b FROM Test b WHERE b.value = :value order by b.date desc)")

1 个答案:

答案 0 :(得分:3)

我会做以下事情:

@NamedQuery(name = "Test.getOrderedRecords", query = "SELECT a FROM Test a WHERE a.value = :value order by a.date desc)")

然后:

List results = entityManager.createNamedQuery("Test.getOrderedRecords").setParameter("value", X).setMaxResults(2).getResultList();

JPA通常很聪明,可以找出截断结果列表的最佳方法。