在JPA中,我是否可以另外约束@OneToMany
或@ManyToMany
来生成相当于的内容:
select * from other_table a where a.fk_id = {id} and arbitrary other predicates
或者换句话说,我可以用这个获得所有员工的电话:
@Entity
public class Employee {
@Id
@Column(name="EMP_ID")
private long id;
...
@OneToMany(mappedBy="owner")
private List<Phone> phones;
...
}
但如果我想要三个列表怎么办?
@Entity
public class Employee {
@Id
@Column(name="EMP_ID")
private long id;
...
@OneToMany(mappedBy="owner")
private List<Phone> phonesInAreaCode212; // only NYC phone numbers
@OneToMany(mappedBy="owner")
private List<Phone> phonesInAreaCode202; // only DC phone numbers
@OneToMany(mappedBy="owner")
private List<Phone> phonesInOtherAreaCodes; // areaCode not in ('212', '202')
...
}
我知道我可以通过使用视图来实现这一点,我可以用单表继承和鉴别器列来完成它,但有没有办法为任意where子句谓词(包括复合谓词)执行此操作?
答案 0 :(得分:0)
如何设置懒惰提取,它可能正在进行,例如,
@OneToMany(Fetch=FetchType.LAZY)
然后只对你想要的列表进行提取,如下所示:
employee.getPhonesInAreaCode212.size();