複数の電話番号を持つPersonエンティティがあります。
@OneToMany(mappedBy="person", cascade=CascadeType.ALL)
public Set<PhoneNumberOfPerson> getPhoneNumbers() {
return phoneNumbers;
}
ここで、熱心に取得されるPersonの「デフォルトの電話番号を取得する」メソッドを実装したいと思います。このデフォルトの電話番号は、phoneNumbersセットの電話番号の1つです。これを行う方法はありますか?
私がこれを実装しようとしている理由は、このデフォルトの電話番号を、データベース内の「すべての」人をリストするページにリストするためです。
JPAの初心者として、私は最初に次の方法で試してみました。
@Transient
public PhoneNumberOfPerson getDefaultPhoneNumber(){
if(this.getPhoneNumbers().size()==0)
return null;
return this.getPhoneNumbers().iterator().next();
}
しかし、これはもちろん非常に遅いリストページをもたらしました。
では、クエリに基づいてエンティティのコレクションから単一のエンティティを取得する一時的なプロパティを定義する方法はありますか?永続性プロバイダーとしてHibernateを使用しています。