Groovy标准查询

时间:2010-10-18 15:00:41

标签: hibernate grails groovy hibernate-criteria

我有一个看起来像这样的域名模型

Category 1 ------- * Type 1 ------- * Expense

或者用英语“费用有类型,每种类型属于一个类别”。我想写一个Criteria查询,它将查找特定类别中的所有费用。我试过这两个

Expense.withCriteria {
    eq('type.category', someCategoryInstance)
}

和这个

Expense.withCriteria {
    type {
        eq('category', someCategoryInstance)
    }    
}

但它们都不起作用,我错过了什么?

更新

我被要求显示域类,所以这里是:

public class Category {

    String description
    static hasMany = [types: Type]  
}

public class Type {

    String description
    static hasMany = [expenses: Expense]
    static belongsTo = [category: Category]
}

public class Expense {

    static belongsTo = [type: Type]

    Date date
    String description
    float amount
}

1 个答案:

答案 0 :(得分:1)

根据声明关联的方式,类型表可能不会加入查询。您可以明确告诉它在您的条件中加入join

Expense.withCriteria {
    join('type')
    type {
        eq('category', someCategoryInstance)
    }    
}