【发布时间】:2009-02-16 14:14:16
【问题描述】:
我有一个带有多个电话号码的 Person 实体。
@OneToMany(mappedBy="person", cascade=CascadeType.ALL)
public Set<PhoneNumberOfPerson> getPhoneNumbers() {
return phoneNumbers;
}
现在我想为迫切获取的 Person 实现一个“获取默认电话号码”方法。此默认电话号码是 phoneNumbers 集中的电话号码之一。有没有办法做到这一点?
我尝试实现此功能的原因是将此默认电话号码列在列出数据库中“所有”人员的页面上。
作为一名 JPA 初学者,我最初尝试使用以下方法:
@Transient
public PhoneNumberOfPerson getDefaultPhoneNumber(){
if(this.getPhoneNumbers().size()==0)
return null;
return this.getPhoneNumbers().iterator().next();
}
但这当然会导致列表页面非常缓慢。
那么有什么方法可以定义一个瞬态属性,该属性根据某些查询从实体集合中获取单个实体?我使用 Hibernate 作为我的持久性提供程序。
【问题讨论】:
标签: hibernate jpa ejb-3.0 entity-relationship one-to-many