0

現在、ドメインモデルには次のものがあります。

@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Entity
abstract class Item {
    @ManyToOne
    @ForeignKey(name="FK_ITEM_ORG")
    @JoinColumn(name="ORG_ID")
    private Organization org
}

@Table(name = "ItemA")
public class ItemA extends Item {}

@Table(name = "ItemB")
public class ItemA extends Item {}

HibernateのHBM2DDLは、このマッピング用に2つのテーブルを作成します:ItemAおよびItemB。どちらにもORG_ID列とテーブルへの外部キーがありOrganizationます。ただし、各外部キーには乱数が追加されます(つまり、FK_ITEM_ORG98343)。各テーブルが使用する外部キーを指定するにはどうすればよいですか?たとえば、とが必要FK_ITEMA_ORGですFK_ITEMB_ORG

アップデート

次の質問も参照してください。ForeignKeyアノテーションは、スキーマを生成するためにHBM2DDLによってのみ使用されますか?

4

1 に答える 1

2

残念ながら、メインクラスのフィールドからアノテーションを削除し、FK名を指定して各子のメソッドに移動する必要があります。

そんな感じ:

@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Entity
public abstract class Item {
    private Organization  org;
    public Organization getOrg() {
        return org;
    }

}

@Entity
@Table(name = "ItemA")
public class ItemA extends Item {
    @ManyToOne
    @JoinColumn(name="ORG_ID")
    @ForeignKey(name="FK_ITEM_ORG_1")
    public Organization getOrg(){
        return super.getOrg();
    }
}


public class ItemB extends Item{
    @ManyToOne
    @JoinColumn(name="ORG_ID")
    @ForeignKey(name="FK_ITEM_ORG_2")
    public Organization getOrg(){
        return super.getOrg();
    }
}
于 2011-07-16T17:26:02.310 に答える