假设我有一个名为“User”的域类,它可以跟随其他“User”对象。它有一个指定为:
的字段def hasMany=[followedUsers:User]
我需要反向(找到跟随特定User对象的所有User对象)而不设置反向关系,因为它不是经常执行的用例。我尝试使用闭包来做这样的事情:
User.findAll { it.followedUsers.contains(userInstance) }
但这始终会返回数据库中的所有用户,无论他们的跟随状态如何。我尝试使用HQL,但也失败了。
有人能给我一个快速指针,说明最简单的方法吗?谢谢。
答案 0 :(得分:13)
您可以使用此HQL查询:
User.executeQuery(
'select u from User u where :follower in elements(u.followedUsers)',
[follower: userInstance])
答案 1 :(得分:1)
在我看来,这种语法更清晰:
User.withCriteria { followedUsers{ eq('id', userInstance.id) } }