3.2.7. セカンダリテーブルのマッピング
@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
に含まれます。storyPart1
は Cat1
、storyPart2
は Cat2
に含まれます。Cat1
は cat_id
を外部キーとして MainCat
に結合されます (Cat2
は id
を使用します) (つまり、MainCat
id カラムが持つのと同じカラム名)。さらに、storyPart2
に対する一意の制約が設定されます。
追加の例については、JBoss EJB 3 チュートリアルまたは Hibernate Annotations ユニットテストスイートを確認してください。