我在 OneToMany 关系中有两个实体。
@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”中寻找解决方案。