CReference エンティティのコレクション内のすべての子が条件を満たすエンティティ A のエントリを選択しようとしています。私が現在持っているクエリでは、少なくとも 1 つのメンバーで条件を満たす必要があるだけです。
現在のクエリ
このクエリは現在、タイプ A のすべてのオブジェクトを選択します。ここで、その c_references クラスのアイテムの少なくとも 1 つが
SELECT a FROM A a INNER JOIN FETCH a.c_references c_refs INNER JOIN FETCH c_refs.c_reference c_ref WHERE (c_ref.flag_one=TRUE AND c_ref.flag_two=TRUE)
クラス
クラスA
@Entity
public class A{
@Id
private UUID a_uuid;
@OneToMany(fetch = FetchType.EAGER)
@JoinColumn(name = "owning_a_uuid")
private List<CReference> c_references;
}
クラス CReference
@Entity
// This class keeps references to all of the A objects that have referenced a C object
public class CReference{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long c_reference_id;
@OneToOne
private A a_referencing_c;
@OneToOne
private C c_reference;
}
クラスC
@Entity
@Cacheable
public class C{
@Id
private UUID c_uuid;
private Boolean flag_one = false;
private Boolean flag_two = false;
}