Hibernate 如何在EJB3/JPA中急切地从集合中获取单个“默认”实体
我有一个有多个电话号码的个人实体Hibernate 如何在EJB3/JPA中急切地从集合中获取单个“默认”实体,hibernate,jpa,ejb-3.0,entity-relationship,one-to-many,Hibernate,Jpa,Ejb 3.0,Entity Relationship,One To Many,我有一个有多个电话号码的个人实体 @OneToMany(mappedBy="person", cascade=CascadeType.ALL) public Set<PhoneNumberOfPerson> getPhoneNumbers() { return phoneNumbers; } 但是这当然会导致一个非常非常慢的列表页面 那么,有没有办法定义一个瞬态属性,根据某个查询从实体集合中获取单个实体?我正在使用Hibernate作为持久性提供程序。您最好的选择可能
@OneToMany(mappedBy="person", cascade=CascadeType.ALL)
public Set<PhoneNumberOfPerson> getPhoneNumbers() {
return phoneNumbers;
}
但是这当然会导致一个非常非常慢的列表页面
那么,有没有办法定义一个瞬态属性,根据某个查询从实体集合中获取单个实体?我正在使用Hibernate作为持久性提供程序。您最好的选择可能是在PhoneNumbers表上有一个字段,指示它是默认号码,然后对返回人员的查询执行联接提取
select p from Person p JOIN FETCH p.phoneNumbers as ph where ph.default = true
如果某人可能没有电话号码,则使用左连接
select p from Person p JOIN FETCH p.phoneNumbers as ph where ph.default = true