Запрос критериев Groovy

У меня есть модель домена, которая выглядит так

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
}

person Dónal    schedule 18.10.2010    source источник
comment
Второй мне кажется правильным, клянусь, я делал это раньше. Можете ли вы указать базовую структуру ваших доменных классов в вопросе?   -  person Rob Hruska    schedule 18.10.2010


Ответы (1)


В зависимости от того, как объявлены ассоциации, таблица типов может не присоединяться к запросу. Вы можете явно указать ему присоединиться с помощью join в ваших критериях.

Expense.withCriteria {
    join('type')
    type {
        eq('category', someCategoryInstance)
    }    
}
person ataylor    schedule 18.10.2010
comment
Вероятно, поэтому порядок сортировки по умолчанию в static mapping для ассоциации иногда также не работает, я предполагаю (поскольку он иногда создает таблицу соединений для ассоциации)? - person Rob Hruska; 18.10.2010
comment
Ассоциации классов домена выглядят нормально для меня. Интересно, есть ли конфликт пространств имен между вашим классом Category и groovy.lang.Category? - person ataylor; 18.10.2010