Jakarta ee JPQL在多对多关系上连接

Jakarta ee JPQL在多对多关系上连接,jakarta-ee,jpa,jpa-2.0,jpql,Jakarta Ee,Jpa,Jpa 2.0,Jpql,我在客户机和用户之间有一种多对多的关系,我正在尝试运行一个查询,以返回所有活动用户及其客户机,其中客户机也应该是活动的。但是,它也会返回所有不活动的客户端。我的问题是这样的 select u from User u inner join u.clientUsers cu join cu.client c where u.active = true and c.active = true 我确信我的联接类型不正确。有人能帮忙吗?它将返回所有处于活动状态且拥有活动客户端的用户。它不会返回客户端,因

我在客户机和用户之间有一种多对多的关系,我正在尝试运行一个查询,以返回所有活动用户及其客户机,其中客户机也应该是活动的。但是,它也会返回所有不活动的客户端。我的问题是这样的

select u from User u inner join u.clientUsers cu join cu.client c where u.active = true and c.active = true

我确信我的联接类型不正确。有人能帮忙吗?

它将返回所有处于活动状态且拥有活动客户端的用户。它不会返回客户端,因此当您访问user.clientUsers关系时,您将获得所有关联的客户端。返回的实体旨在反映实体在数据库中的状态,因此规范不支持基于查询构建不完整的实体。它会在跟踪更改时引起问题,并在需要实际数据时造成混乱。请尝试将查询基于具有活动用户的活动客户端,然后从客户端访问用户(假设关系是双向的): “从客户端c中选择c加入c.clientUsers cu,其中c.active=true和cu.user.active=true” 或者,如果希望在一个查询中同时使用这两种查询: “从客户端c中选择c,u加入c.clientUsers cu加入cu.user u,其中c.active=true和u.active=true”

第二个查询将返回对象[]的列表,每个对象数组包含一个客户端及其关联的活动用户。如果需要,您可以对其进行处理以映射用户和客户端集合