我有3个域类:
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:没有方法签名: Contract.findAllBySubCategory()适用于参数类型: (java.util.ArrayList)值:[[SubCat01,SubCat02,SubCat03]] 可能的解决方案:findAllBySubCategory(java.util.List)
有谁知道我做错了什么?
答案 0 :(得分:3)
JamesA的答案是正确的,只是为了完整起见我还想说这似乎适合于标准查询
Category category = Category.get(1)
List<Contracts> contracts = Contract.createCriteria.list {
subCategory {
eq('category', category)
}
}
答案 1 :(得分:2)
findAll
动态查找程序返回一个列表,但默认情况下需要一个标量参数。尝试使用InList
比较器。
Contract.findAllBySubCategoryInList(SubCategory.findAllByCategory(Category.get(1)))