2011-12-19 1 views
1

私は3つのドメインクラスを持っている:ネストされたfindAllBy *

class Contract { 

    String referenceNumber 

    static belongsTo = [subCategory:SubCategory] 
} 

class SubCategory { 

    String name 

    static belongsTo = [category:Category] 
    static hasMany = [contracts:Contract] 
} 

class Category { 

    String name 

    static hasMany = [subCategories:SubCategory] 
} 

私は特定のカテゴリのすべてのサブカテゴリを取得(特定のカテゴリに属しているすべての契約を検索し、これらすべてのためのすべての契約を取得したいですサブカテゴリ)。

Contract.findAllBySubCategory(SubCategory.findAllByCategory(Category.get(1))) 

が、それは私にエラーを与え続け:これは私が試したものです

groovy.lang.MissingMethodException: No signature of method: Contract.findAllBySubCategory() is applicable for argument types: (java.util.ArrayList) values: [[SubCat01, SubCat02, SubCat03]] Possible solutions: findAllBySubCategory(java.util.List)

誰もが私が間違ってやっている知っていますか?

答えて

2

findAllダイナミックファインダはリストを返しますが、デフォルトではスカラーパラメータが必要です。 InListコンパレータを試してみてください。

Contract.findAllBySubCategoryInList(SubCategory.findAllByCategory(Category.get(1))) 
3

JamesAによって答えはちょうど私もこれを基準クエリ

Category category = Category.get(1) 
List<Contracts> contracts = Contract.createCriteria.list { 
    subCategory { 
    eq('category', category) 
    } 
} 
に適しているように見えることを言いたい完全を期すため、正確です