Если ожидаемый результат небольшой, возможно, достаточно просто сделать это:
def c = UserRole.createCriteria()
def users = c.list {
role {
eq('authority', 'ROLE_ADMIN')
}
user {
// additional user property constraints
}
}.collect { it.user }
Если вы ожидаете большой набор результатов или вам нужно перелистывать их, я не уверен в этом. Я брошу это там, но я никогда не пробовал это. Я не знаю, можно ли использовать projections { property('association') }
и заставить его работать.
def c = UserRole.createCriteria()
def users = c.list {
projections {
property('user') // never tried this, but worth a shot
}
role {
eq('authority', 'ROLE_ADMIN')
}
user {
// additional user property constraints
}
}
Я не думаю, что то, что вы пытаетесь сделать в вашем примере, сработает, так как на самом деле у вас нет определенных отношений в ваших User
или Role
классах, которые ссылаются на UserRole
(т.е. с hasMany
).