Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 如何在EJB3/JPA中急切地从集合中获取单个“默认”实体_Hibernate_Jpa_Ejb 3.0_Entity Relationship_One To Many - Fatal编程技术网

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