grails - 如何在 Grails 中搜索其集合中包含另一个元素的元素?

标签 grails collections grails-orm

假设我有一个名为“User”的域类,它可以跟随其他“User”对象。它这样做有一个字段指定为:

def hasMany=[followedUsers:User]

我需要在不设置反向关系的情况下执行反向操作(查找特定 User 对象之后的所有 User 对象),因为它不是经常执行的用例。我尝试使用闭包来做这样的事情:
User.findAll { it.followedUsers.contains(userInstance) }

但这总是返回数据库中的所有用户,无论他们的关注状态如何。我尝试使用 HQL 但也失败了。

任何人都可以快速指导我完成此操作的最简单方法吗?谢谢你。

最佳答案

您可以使用此 HQL 查询:

User.executeQuery(
   'select u from User u where :follower in elements(u.followedUsers)',
   [follower: userInstance])

关于grails - 如何在 Grails 中搜索其集合中包含另一个元素的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8946232/

相关文章:

java - 在 Java 或 Groovy 中转换 UTC 时间 T0 本地时间

grails - Grails 的 Quartz 工作只触发一次

grails - grails:如何在 Bootstrap 中保存域对象并通过忽略唯一约束错误来避免重复?

c# - 如何在保存到数据库之前维护唯一列表? - C#

grails - 在 AfterInsert/AfterUpdate 中修改对象

grails - GORM 中的复合外键列

javascript - 如何使用 Grails Controller 中的 JSON 填充选择框

java - google的ImmutableList和Collections.unmodifyingList()有什么区别?

java - 在泛型集合中实现 remove(Object o)

Grails gorm 'where' 查询使用 'lower()' 和 'in' 运算符