現在、レガシーシステムのテーブルのペアからロード (読み取り専用) する Hibernate アノテーション付きクラスのペアを作成しようとしています。従来のシステムは、テーブルのキーイングに対して一貫した (多少時代遅れではあるが) アプローチを使用しています。マップしようとしているテーブルは次のとおりです。
Customer CustomerAddress
-------------------------- ----------------------------
customerNumber:string (pk) customerNumber:string (pk_1)
name:string sequenceNumber:int (pk_2)
street:string
postalCode:string
次のような CustomerAddress クラスを作成することで、これに取り組みました。
@Entity
@Table(name="CustomerAddress")
@IdClass(CustomerAddressKey.class)
public class CustomerAddress {
@Id
@AttributeOverrides({
@AttributeOverride(name = "customerNumber", column = @Column(name="customerNumber")),
@AttributeOverride(name = "sequenceNumber", column = @Column(name="sequenceNumber"))
})
private String customerNumber;
private int sequenceNumber;
private String name;
private String postalCode;
...
}
CustomerAddressKey クラスは、2 つのキー フィールドを持つ単純な Serializable オブジェクトです。Customer オブジェクトは次のように定義されます。
@Entity
@Table(name = "Customer")
public class Customer {
private String customerNumber;
private List<CustomerAddress> addresses = new ArrayList<CustomerAddress>();
private String name;
...
}
だから、私の質問は次のとおりです: Customer テーブルで OneToMany 関係を表現するにはどうすればよいですか?