2011-04-01 50 views
1

如何從命令.list()返回對象返回的Grails列表中的第一個元素,但不使用Java方法。我的意思是,我們有沒有選擇在調用.list()時選擇頂層元素,類似於SQL查詢SELECT TOP FROM。獲取Grails列表中的第一個元素

我不喜歡使用這樣的:

List domains = Domain.list() 
return domains.get(0) 

Becayse它會導致內存資源這麼多。 非常感謝!

回答

9

一個快速的方法是使用最大參數與list

Domain.list([max:1]) 

或者你可以使用一個標準的查詢,我相信:

def domainCriteria = Domain.createCriteria() 
def firstDomain = domainCriteria.list{ 
    maxResults(1) 
    order('id', 'asc') 
}[0] 
+0

也許嘗試。獲得{的maxResults(1)...},而不[0]? – koddo 2011-04-01 09:21:37

+0

這不會讓你的列表包含一個項目,而不是單個項目本身? – 2011-04-01 10:57:22

+0

它返回的項目,而不是一個列表 – koddo 2011-04-01 11:51:31

1

另一種方式來做到這一點是與find,它返回第一個結果,如果表爲空,則返回null。

User.find("from User") 

如果你想不止一個,你也可以使用findAll具有最大參數

User.findAll("from User", [max: 10]) 

如果你真的想剛剛從表中的任何對象,然後list可能是你最好的選擇,但在大多數情況下,通過這些查詢,您希望將其限制得多一點,並且使用HQL可以非常簡單。

相關問題