Is the ForeignKey annotation only used by HBM2DDL

2019-07-27 18:06发布

问题:

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?

回答1:

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) ?



回答2:

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).