Вот классы доменов, с которыми я работаю:
class Foo {
String name,
type
static hasMany = [ bars: Bar ]
List bars
static mapping = {
bars lazy:false
}
}
class Bar {
String value
static belongsTo = Foo
}
Я написал несколько запросов Criteria, чтобы предоставить пользователям интерфейс для запросов. Интерфейс предоставляет выпадающий список для выбора определенного значения для Bar. Проблема возникает, когда пользователь пытается указать значение для класса Bar и хочет получить соответствующие Foos. Вот запрос критерия:
def query = {
and {
if (params.name && params.name != '') {
ilike('name', "%${params.name}%")
}
if (params.type && params.type != '') {
ilike('type', "%${params.type}%")
}
if (params.value && params.value != '') {
bars {
eq("value", params.value)
}
}
}
}
def results = Foo.createCriteria().list(params,query)
По сути, похоже, что происходит то, что только Бары, которые соответствуют указанному значению, возвращаются с объектом Foo, даже если у объекта Foo есть другие Бары, которые не соответствуют этому объекту. Я хочу, чтобы он возвратил все Бары, так как я запрашиваю у Фу соответствующие Бары.
Есть идеи? Требуются дополнительные разъяснения?