2

ドメイン モデルを簡素化するために、有効な記録日パターンを使用しようとしています。

Person to Address は OneToMany ですが、特定の日付の時点では OneToOne です。

Person と Address の両方に開始日と終了日があり、時間の経過に伴う変化が考慮されます。また、Address は自宅と職場の 2 つの役割で使用できます。

JPA 2.0 と Hibernate 4.2 拡張機能を使用しています。

したがって、ドメイン オブジェクトは次のようになります。

人物クラス

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;

}

および Address クラス

public class Address {

long id;

Date start;

Date end;

String street;

String city;


String state;
}

質問:

1. テーブルが OneToMany アソシエーションにある場合でも、Person to Address アソシエーションに @OneToOne を使用できますか?

2. JPA アノテーションを使用してこれを行う最善の方法は? Hibernate は @Filter を提供しますが、それでも OneToMany 関連付けを想定していませんか?

4

0 に答える 0