gpt4 book ai didi

java - 为什么这个 HQL 查询看起来不应该起作用,但它却起作用了?

转载 作者:行者123 更新时间:2023-12-01 13:02:24 25 4
gpt4 key购买 nike

对于以下对象:

class UserEntity {
UUID id;
private List<TeamEntity> teams = new ArrayList<TeamEntity>();
private List<RuleEntity> rules = new ArrayList<RuleEntity>();
...

}

class RuleEntity {
UUID id;
private TeamEntity ownerTeam;
private List<UserEntity> users = new ArrayList<UserEntity>();
...
}

Class TeamEntity {
UUID id;
private List<UserEntity> users = new ArrayList<UserEntity>();
private List<RuleEntity> rules = new ArrayList<RuleEntity>();
}

如果我执行以下 HQL 查询,它会毫无错误地完成并返回正确的结果:

select count(ruleEntity) from RuleEntity ruleEntity where :userId in elements(ruleEntity.users) and ruleEntity.ownerTeam.id = :teamId

但是,我不明白这一点是如何工作的:

where :userId in elements(ruleEntity.users)

对我来说,这是检查 userID(这是一个 UUID)是否存在于集合 RuleEntity.users 中,它是一个 UserEntitys 列表,所以我会认为这会失败,因为它检查了 UserEntity 对象列表中的UUID 对象?

最佳答案

它选择所有具有用户列表的规则实体,并且至少一个用户列表包含 :userId 参数

用 SQL 术语来说

FROM rule_entity
WHERE :userId in (select user_id
from rule_entity_users
where rule_entity.rule_id=rule_entity_users.rule_id)

关于java - 为什么这个 HQL 查询看起来不应该起作用,但它却起作用了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23426898/

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