Запрос класса домена Grails - как найти по полям, которые ссылаются на другой класс домена?

Допустим, у меня есть два класса домена:

class User {
  String name
  Role role
}

class Role {
  String name
  static belongsTo = [user: User]
}

, и я создаю несколько записей:

def r1 = new Role(name: "role1").save()
def r2 = new Role(name: "role2").save()
new User(name: "user1", role: r1).save()
new User(name: "user2", role: r2).save()
new User(name: "user3", role: r1).save()

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

def role = Role.findByName("role1"); //returns a Role with [ id:1 name:"role1" ]
User.findAllByRole(role) //returns null
User.findAllByRole(new Role(name: "role1")) //returns null
User.findAllByRole(role.id) //returns null
User.findAllByRole(id: role.id) //returns null

Возможно ли для класса домена найти другие связанные классы домена с помощью методов динамического поиска *? Я могу сделать это с помощью namedQueries, но не с помощью id, потому что Я не хочу писать их для каждого отношения, которое у меня есть между классами предметной области

5
задан Erin Drummond 16 September 2010 в 23:46
поделиться