Почему Grails не возвращает то, что я ищу? - PullRequest
1 голос
/ 18 августа 2010

Вот классы доменов, с которыми я работаю:

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 есть другие Бары, которые не соответствуют этому объекту. Я хочу, чтобы он возвратил все Бары, так как я запрашиваю у Фу соответствующие Бары.

Есть идеи? Требуются дополнительные разъяснения?

1 Ответ

1 голос
/ 18 августа 2010

Согласно Grails Guide ваш запрос выглядит нормально.

Я вижу проблему в Foo объекте. Попробуйте удалить List bars. Отношение к Bar уже определено с static hasMany = [ bars: Bar ].

Обновление

Я бы начал с руководство по гралям . Реализуйте их пример. А затем попробуйте изменить его на мое решение шаг за шагом . Вы увидите, в чем проблема.

...