2016-09-16 9 views
1

私は、ドメインクラスを持っているが、いくつかのコンテンツレコードがデータベースに存在するgrailsの最後の2つのレコードを効率的に取得する方法はありますか?

class Content{ 

    String content 
    Date dateCreated 
    Date lastUpdated 

} 

言います。私は最新の2つのレコードを取得したい。 Grailsで2つの最新のレコードを照会する効率的な方法は何ですか?ありがとう!

+1

Hibernateを使用していますか? –

答えて

4

Content.list(max: 2, sort: "dateCreated", order: "desc") 

可能性はありませんか?

2

あなたにHQLクエリを書くことができます -

String queryString = "select content from Content order by lastUpdated desc" 

List contentList = Content.executeQuery(queryString,[max: 2, offset: 0]) 
3

"武器" あなたが作る...

HQLクエリー

def query = "SELECT content from Content order by lastUpdated desc" 
def data = Content.executeQuery(query,[max: 2, offset: 0]) 

SQLクエリのどのような選択肢

SELECT * FROM table_name ORDER BY lastUpdated DESC LIMIT 2 

のGrailsのcreateCriteria:

def c = Content.createCriteria() 
def results = c.list { 
    order("lastUpdated", "desc") 
    maxResults(2) 
} 

...最良の選択の主な原理は同じまま - 降順順序を2つの結果を取得します。
検索するデータがそれほど簡単でない場合、実際のSQLクエリまたはHQLクエリは必要ありません。 Grailsの機能を使うことができます。パフォーマンス上の兆候はありません。

+0

私はこれらのアプローチについては何も主張しません。なぜ 'where'クエリですか? –

関連する問題