Предполагается, что следующие доменные объекты:
UserChallenge {
String invitationKind
}
ChallengeGroup {
UserChallenge challenge
UserGroup group
}
UserGroup {
name
}
Следующий запрос возвращает вызовы с ассоциацией групп, которая частично заполнена соответствующими группами:
UserChallenge.withCriteria {
eq('invitationKind', 'GROUP')
groups {
'in'('group.id', visibleGroupIds)
}
}
В сообщении http://adhockery.blogspot.com/2009/06/querying-by-association-redux.html он предлагает использовать createAlias () и модифицировать запрос выше, похоже, работает:
UserChallenge.withCriteria {
eq('invitationKind', 'GROUP')
createAlias('groups', 'g')
'in'('g.group.id', visibleGroupIds)
}
Однако следующее не работает:
UserChallenge.withCriteria {
or {
eq('invitationKind', 'OPEN')
and {
eq('invitationKind', 'GROUP')
createAlias('groups', 'g')
'in'('g.group.id', visibleGroupIds)
}
}
}
И возвращает только проблемы с соответствиемвидимые группы идентифицируют не проблемы, которые являются «открытыми».Кажется, не имеет значения, куда вы положили вызов createAlias ().
Работает следующее:
UserChallenge.withCriteria {
or {
eq('invitationKind', 'OPEN')
and {
eq('invitationKind', 'GROUP')
groups {
'in'('group.id', visibleGroupIds)
}
}
}
}
за исключением того, что он возвращает вызовы только с соответствующими группами (исходная проблема)Я пытаюсь решить).