Search code examples
hibernateforeign-keyshbm2ddl

Is the ForeignKey annotation only used by HBM2DDL to generate the schema?


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?


Solution

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