我正在尝试使用有效记录日期模式来简化域模型。
Person to Address 是 OneToMany,但在给定日期它是 OneToOne。
Person 和 Address 都有一个开始和结束日期,以说明随时间的变化。此外,地址可用于两个角色 - 家庭和工作。
我正在使用带有 Hibernate 4.2 扩展的 JPA 2.0。
因此,我希望域对象看起来像这样:
人物类
public class Person {
@Transient
Date effectiveDate; // used to filter Person and Address record by effective date
long id;
Date start;
Date end;
String firstName;
String lastName;
Address home; // not Collection<Address> homeAddresses;
Address work; // not Collection<Address> workAddresses;
}
和地址类
public class Address {
long id;
Date start;
Date end;
String street;
String city;
String state;
}
问题:
1. 即使表在 OneToMany 关联中,是否可以将 @OneToOne 用于 Person to Address 关联?
2. 如何最好地使用 JPA 注释来做到这一点?Hibernate 提供了@Filter,但那不会仍然假设一个 OneToMany 关联吗?