gpt4 book ai didi

grails - 比较Grails中的域对象之间的关联

转载 作者:行者123 更新时间:2023-12-02 14:55:52 25 4
gpt4 key购买 nike

我不确定是否要采用最佳方法,但是我将尽力解释我要做什么。

我有以下 Realm 类(class)

类用户{
静态hasMany = [目标:目标]
}

因此,每个用户都有一个目标对象列表。我希望能够获取一个User实例,并在其目标列表中返回5个用户(具有该实例)的匹配Goal对象数量最多。

有人可以请我解释一下我该怎么做吗?

最佳答案

实现此目的的最简单,最有效的方法是使用普通SQL。假设您有这些表

users      [id]
goals [id, description]
user_goals [user_id, goal_id]

您可以使用以下查询执行所需的操作:
set @userId=123;
select user_id, count(*) as matched from user_goals
where user_id!=@userId
and goal_id in (select ug.goal_id from user_goals ug where ug.user_id=@userId)
group by user_id order by matched desc limit 5;

这将获取一个用户ID,并返回具有匹配目标的其他用户的列表,并按匹配次数排序。用 GoalService包裹起来,您就完成了!
class GoalService {
def findUsersWithSimilarGoals(user) {
// ...
}
}

也可以使用条件或HQL来执行此操作,但是对于像这样的查询,通常更容易使用SQL。

关于grails - 比较Grails中的域对象之间的关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2596815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com