2013-04-25 2 views
0

Я использую реализацию JPA Hibernate, и я пытаюсь создать именованный запрос, упорядоченный данными, а затем просто захватить первые две строки. Я пробовал нижеследующее, но оно не соответствует действительности. Есть идеи? Я использую СУБД Oracle.Hibernate NamedQuery, используя Oracle rownum и order by

@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)") 

ответ

2

Я хотел бы сделать следующее:

@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, как правило, достаточно умен, чтобы выяснить, наилучший подход к усечение списка результатов.