Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
外键在使用Hibernate';s表每类继承_Hibernate_Foreign Keys_Hbm2ddl - Fatal编程技术网

外键在使用Hibernate';s表每类继承

外键在使用Hibernate';s表每类继承,hibernate,foreign-keys,hbm2ddl,Hibernate,Foreign Keys,Hbm2ddl,我的域模型中当前包含以下内容: @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 cla

我的域模型中当前包含以下内容:

@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为此映射创建了两个表:
ItemA
ItemB
。两者都有
ORG\u ID
列和
Organization
表的外键。但是,每个外键都附加了一个随机数(即FK_ITEM_ORG98343)。如何指定每个表使用的外键?例如,我希望有
FK_ITEMA_ORG
FK_ITEMB_ORG

更新


另请参见下面的问题:

不幸的是,您必须从主类中的字段中删除注释,并将其移动到提供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();
    }
}

我猜这也意味着我不能使用字段级注释?或者可以将字段和方法级别合并?可以合并。有关详细信息,请参见@Access注释。此外,如果您希望全局重新定义FK名称,命名策略也可以帮助您,例如,好主意!如果您对我上面链接的后续问题有任何想法,我将不胜感激:)