2.2.7. Mapping secondary tables 第2テーブルのマッピング
<2.2.6. Mapping composite primary and foreign keys | 目次
@SecondaryTable か @SecondaryTables をクラスレベルに使うことで、一つのエンティティBeanを複数のテーブルにマッピングすることができるよ。あるカラムが特定のテーブルにあることを説明するのに、@Column や @JoinColumn の table パラメータを使うよ。
@Entity @Table(name="MainCat") @SecondaryTables({ @SecondaryTable(name="Cat1", pkJoinColumns={ @PrimaryKeyJoinColumn(name="cat_id", referencedColumnName="id") ), @SecondaryTable(name="Cat2", uniqueConstraints={@UniqueConstraint(columnNames={"storyPart2"})}) }) public class Cat implements Serializable { private Integer id; private String name; private String storyPart1; private String storyPart2; @Id @GeneratedValue public Integer getId() { return id; } public String getName() { return name; } @Column(table="Cat1") public String getStoryPart1() { return storyPart1; } @Column(table="Cat2") public String getStoryPart2() { return storyPart2; }
この例では、name は MainCatに、storePart1 は Cat1、storePart2 は Cat2 になるよ。Cat1 は cat_id を外部キーに MainCat と結合され、Cat2 は id(つまり、MainCatのidと同じ名前)で結合されるよ。さらに、storePart2はユニーク制約がセットされるよ。
JBoss EJB3 チュートリアルか、Hibernate Annotations の単体テストスイートにもっと例があるよ。<2.2.6. Mapping composite primary and foreign keys | 目次