gpt4 book ai didi

grails - 如何找到在多对多关系中具有单个角色的用户?

转载 作者:行者123 更新时间:2023-12-02 15:19:46 24 4
gpt4 key购买 nike

可以说我有两个类User和Role和一个复合类UserRole。

这是多对多的关系。有了groovy,我想算出拥有唯一角色USER_ROLE的用户总数。我该怎么办?

class User{

String name

}

class Role{

String authority

}

class UserRole{

User user
Role role

}

我只输入了相关信息。

我想形成一个gorm查询,例如
def result = UserRole.createCriteria().list(){
eq('role', Role.get(1)) //the Role with id 1 is USER_ROLE
}

这样我就可以拥有唯一角色USER_ROLE的用户数。感谢您的帮助!谢谢!

最佳答案

而不将hasMany添加到您的角色和用户域中(您可以将hasMany从User添加到UserRole,但不应从角色到UserRole添加一个hasMany),
这个HQL查询应该做您想要的。

User.executeQuery("\
SELECT u \
FROM User AS u \
WHERE EXISTS ( \
SELECT 1 \
FROM UserRole AS ur_a \
WHERE ur_a.user = u \
AND ur_a.role = :searchRole \
) \
AND NOT EXISTS ( \
SELECT 1 \
FROM UserRole AS ur_b \
WHERE ur_b.user = u \
AND ur_b.role != :searchRole \
) \
", [searchRole: Role.get(1)])

但是,这些选择通常在数据库上表现不佳。可以使用维护功能,也可以不经常执行。

关于grails - 如何找到在多对多关系中具有单个角色的用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39486975/

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