2013-04-25 59 views
0

我正在使用JPA Hibernate實現,我試圖創建一個按數據排序的namedquery,然後只抓取前兩行。我已經嘗試了下面,但它不是有效的。有任何想法嗎?我正在使用Oracle DBMS。使用Oracle rownum的Hibernate NamedQuery和訂購

@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通常是足夠聰明,找出最佳的解決辦法,以截斷結果列表。