Is the ForeignKey annotation only used by HBM2DDL

2019-07-27 18:01发布

I'm having an issue with how Hibernate generates foreign key names when using the TABLE_PER_CLASS inheritance strategy: Foreign keys have random number appended when using Hibernate's TABLE_PER_CLASS inheritance

So I'm wondering if I can simply replace the annotation with the following:

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

That way I always know to go back to the generated DDL and replace all occurrences of CHANGEME. Does Hibernate do anything else with the @ForeignKey attribute that I'm not aware of or is this a good workaround?

2条回答
干净又极端
2楼-- · 2019-07-27 18:08

Possible, you could redefine such behavior via own Naming staretgy - http://docs.jboss.org/hibernate/core/3.2/api/org/hibernate/cfg/NamingStrategy.html#foreignKeyColumnName(java.lang.String, java.lang.String, java.lang.String, java.lang.String) ?

查看更多
走好不送
3楼-- · 2019-07-27 18:18

That's correct, @ForeignKey is only used by HBM2DDL (or its little brother that generate a domain model from an existing database but you are not using that it seems).

查看更多
登录 后发表回答