我正在努力使用 JPA Criteria API 来为我的数据结构制定查询。好的,我的实体如下。我有用户和组(两者共享一个公共基类 OrgEntity)。从逻辑上讲,用户当然可以是多个组的成员。最后,我有一个代表任务的实体,它有一个潜在所有者的列表(可以是单个用户或整个组)。领域模型总结如下并给出,因此我无法更改它。
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
abstract public class OrgEntity {
@Id
public String name;
...
}
@Entity
public class User extends OrgEntity {
public String displayName;
@ManyToMany(mappedBy="members")
public List<Group> groups;
...
}
@Entity
public class Group extends OrgEntity {
@ManyToMany
public List<User> members;
...
}
@Entity
public class Task {
@Id
public String uuid;
@ManyToMany
public List<OrgEntity> potentialOwners;
...
}
Run Code Online (Sandbox Code Playgroud)
我的查询的起点是 User 的单个实例。我想知道用户是潜在所有者的所有任务(无论用户是否直接包含在潜在所有者集合中或潜在所有者中包含的组的成员)。
我第一次尝试使用命名查询如下
SELECT DISTINCT t FROM Task AS t JOIN t.potentialOwners po
WHERE (po IN …Run Code Online (Sandbox Code Playgroud)