2013-07-08 49 views
0

在我的Grails應用程序的域模型中,Event和Performance之間有1-N關係(因爲許多藝術家可能會在每個事件中執行)。我想要檢索最近添加過性能的5個事件。獨特查詢返回的限制結果

我試着用以下標準查詢這樣做:

List<Event> event = Event.createCriteria().listDistinct { 
     performances { 
      order("dateCreated", "desc") 
      isNotNull("dateCreated") 
     } 
     maxResults(count) 
    } 

但是似乎你不能限制結果集使用maxResults鮮明的查詢。是否有另一種方法來實現這一點,例如使用HQL?

回答

4

這應該夠用嗎?

Event.executeQuery("select distinct e from Event as e \ 
        inner join e.performances as p \ 
        where p.dateCreated is not null \ 
        order by p.dateCreated desc", [max: 5]) 

如果您還需要performances在同一個查詢對應於每個event,您可以使用inner join fetch

+0

你打算爲所有listDistinict使用HQL嗎? – danielad

+0

@danielad不是。只要沒有在listDistinct中使用分頁,就可以使用標準。他們不適當地一起工作。 – dmahapatro