2016-10-10 33 views
0

Grails 3.2にはGORMのいくつかの主要な更新が付属しています。Grails 3.2 - ページ区切りと1対多の関連付けで選択

def c = Cat.createCriteria() 
List<Cat> data = c.listDistinct(){ 
    createAlias('furType', 'ft) 
    createAlias('kittens', 'kitten') 
    createAlias('kitten.furType', 'kft') 
    or { 
     ilike('ft.color', 'orange') 
     ilike('kft.color', 'orange') 
    } 
    maxResults 10 
    firstResult 10 
} 

現在のところ、このクエリーでは、各ネコに2つの子猫がある場合、10個ではなく5個の結果しか表示されません。

編集:重複した猫がどのように呼び出されるかを示す例を編集しました。

+0

両方の子猫とも、どちらの猫もfurTypeオレンジを持っていますか?そうでなければ、ilike( 'kft.color'、 'orange')は返される結果の数を制限します。 – elixir

+0

彼らはしません。私はちょうどファータイプオレンジの子猫を持っている猫にページを付けようとしています。しかし、この特定の状況では、あなたは同じfurType色を持つ子猫を2頭持つことはありません。 – Anonymous1

+0

条件照会に問題はありません。あなたの質問を正しく理解できなかったかもしれません。あなたが明確にすることができれば、それはすばらしいことでしょう。 – elixir

答えて

0

これを試してください。

def c = Cat.createCriteria() 
List<Cat> data = c.listDistinct(max: 10, offset: 10){ 
    createAlias('kittens', 'kitten') 
    createAlias('kitten.furType', 'kft') 
    ilike('kft.color', 'orange') 
} 

良い方法あなたがリンクを作成することにより、ページ付けされている場合、あなたは次の形式

http://example.com/controller/action?offset=10 

にリンクを作成することができ、その後、あなたのコントローラのアクションには、次の

params.max = 10 
def c = Cat.createCriteria() 
List<Cat> data = c.listDistinct(params){ 
    createAlias('kittens', 'kitten') 
    createAlias('kitten.furType', 'kft') 
    ilike('kft.color', 'orange') 
} 
を行うことができます
+0

例外が発生します。java.lang.ClassCastException:java.util.LinkedHashMapをgroovy.lang.Closureにキャストできません – Anonymous1

関連する問題