Java 为什么这个HQL查询看起来不应该';T
对于以下对象:Java 为什么这个HQL查询看起来不应该';T,java,sql,hibernate,hql,Java,Sql,Hibernate,Hql,对于以下对象: class UserEntity { UUID id; private List<TeamEntity> teams = new ArrayList<TeamEntity>(); private List<RuleEntity> rules = new ArrayList<RuleEntity>(); ... } class RuleEntity { UUID id; private TeamEntity
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>();
}
但是,我不明白这个钻头是如何工作的:
where :userId in elements(ruleEntity.users)
对我来说,这是检查集合ruleEntity.users中是否存在userID(UUID),ruleEntity.users是UserEntitys的列表,因此,我认为这会失败,因为它在UUID对象的UserEntity对象列表中进行了检查?它选择了所有具有用户列表的RuleEntity,并且至少有一个用户列表包含: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)
FROM rule_entity
WHERE :userId in (select user_id
from rule_entity_users
where rule_entity.rule_id=rule_entity_users.rule_id)