Невозможно создать запрос критерия Grails, содержащий отношение ownTo - PullRequest
5 голосов
/ 29 октября 2010

Я пытался создать построитель критериев, содержащий отношение ownTo, и пока не добился успеха.Рассмотрим следующую модель:

class Msg {
    ...
    static belongsTo = [user: User]
    ...
}  

class User {
    ...
    Organisation organisation
    ...
}  

Я пытаюсь сделать следующий запрос:

Msg.createCriteria().list() {
    ...
    user {
        eq("organisation", organisationInstance)
    }
    ...
}

Все, что я получаю, это следующая ошибка

ERROR errors.GrailsExceptionResolver  - No signature of method: static User.call() is applicable for argument types: (MsgService$_findMessages_closure1_closure6) values: [MsgService$_findMessages_closure1_closure6@afcba8]
Possible solutions: save(), wait(), any(), getAll(), save(java.lang.Boolean), save(java.util.Map)

Я пытался добавить различные небольшие дополнения к запросу критерия, такие как:

join "user"
fetchMode("user", org.hibernate.FetchMode.EAGER)

Но все равно получаю ту же проблему.

Я даже пытался добавить следующее статическое отображение в Msgкласс:

static mapping = {
    columns {
        user lazy: false
    }
}

По-прежнему не работает.

Есть ли способ вообще использовать построитель критериев, содержащий запрос ownTo?

Заранее спасибо за помощь.
Люсьен

Ответы [ 2 ]

7 голосов
/ 01 ноября 2010

Я нашел решение! Проблема не была связана с критерием построения вообще. В этом случае у меня была переменная пользователя в области видимости. После удаления он работает как шарм: -)

2 голосов
/ 29 октября 2010
def criteria = Msg.createCriteria()
results = criteria.list{
    user{
        eq("organisation", organisationInstance)
    }
}
...