Ответ 1
Вы можете использовать этот запрос HQL:
User.executeQuery(
'select u from User u where :follower in elements(u.followedUsers)',
[follower: userInstance])
Скажем, у меня есть класс домена под названием "Пользователь", который может следовать за другими объектами "Пользователь". Он делает это, имея поле, указанное как:
def hasMany=[followedUsers:User]
Мне нужно сделать обратное (найти все объекты пользователя, которые следуют за конкретным объектом пользователя), не настраивая обратную связь, поскольку это часто не используется. Я попытался сделать что-то вроде этого, используя закрытие:
User.findAll { it.followedUsers.contains(userInstance) }
но это всегда возвращает всех пользователей в базе данных, независимо от их статуса. Я пробовал делать с HQL, но потерпел неудачу, а также.
Может ли кто-нибудь дать мне быстрый указатель на самый простой способ сделать это? Спасибо.
Вы можете использовать этот запрос HQL:
User.executeQuery(
'select u from User u where :follower in elements(u.followedUsers)',
[follower: userInstance])
По-моему, этот синтаксис намного чище:
User.withCriteria { followedUsers{ eq('id', userInstance.id) } }