OneToMany 関係に 2 つのエンティティがあります。
@Entity
public class Employee {
@Id @GeneratedValue
public long id;
public String name;
@OneToMany
public Collection<Address> addresses = new ArrayList<Address>();
...}
@Entity
public class Address {
@Id @GeneratedValue
public long id;
public String city;
...}
従業員フィールドにいくつかの簡単な基準を使用して従業員を取得したい (これは問題ありません)。都市フィールドに「ニューデリー」を含む住所のみを含める必要があります (これが問題です)。
JPA 2の以下に相当するもの
from Cat as cat
left join cat.kittens as kitten
with kitten.bodyWeight > 10.0
この問題は、私の実際の問題の単純化されたバージョンです。
私の主な問題は、もっと複雑で、複数の子エンティティがあり、親エンティティのフィルタリングで sql 関数を使用する場合です。
上記の理由により、HQL またはネイティブ クエリを使用できません。
だから私は EntityManager 、 CtiteriaBuilder などを使用して「JPA 2のみ」で解決策を探しています。