Fixed
Details
Assignee
Andrea BorieroAndrea BorieroReporter
Andreas BennekeAndreas BennekeComponents
Fix versions
Affects versions
Priority
Major
Details
Details
Assignee
Andrea Boriero
Andrea BorieroReporter
Andreas Benneke
Andreas BennekeComponents
Fix versions
Affects versions
Priority
Created January 6, 2016 at 10:58 PM
Updated January 13, 2016 at 6:27 PM
Resolved January 7, 2016 at 11:09 AM
Our schema export used to work perfectly with Hibernate 4.x but fails after update to 5.0.
It turned out that the new
SchemaMigratorImpl
tries to create the foreign keys after the tables of a schema are complete. This however fails if those keys refer to tables in a different schema which have not yet been processed.The old
Configuration.generateSchemaUpdateScriptList
created the foreign keys after the tables from all schema had been processed.We created a test project on https://github.com/abenneke/sandbox/tree/master/hibernate-schema where
FirstParent
from schemaFIRST
has children fromSecondChild
from schemaSECOND
and
SecondParent
from schemaSECOND
has children fromFirstChild
from schemaFIRST
(both directions to make the creation order irrelevant, but note that there is no circle)
SchemaExport of Hibernate 4 created those tables this way:
create table FIRST.FirstChild (id varchar(255) not null, parent_id varchar(255), primary key (id)) create table FIRST.FirstParent (id varchar(255) not null, primary key (id)) create table SECOND.SecondChild (id varchar(255) not null, parent_id varchar(255), primary key (id)) create table SECOND.SecondParent (id varchar(255) not null, primary key (id)) alter table FIRST.FirstChild add constraint FK... foreign key (parent_id) references SECOND.SecondParent alter table SECOND.SecondChild add constraint FK... foreign key (parent_id) references FIRST.FirstParent
whereas Hibernate 5 now fails with
create table FIRST.FirstChild (id varchar(255) not null, parent_id varchar(255), primary key (id)) create table FIRST.FirstParent (id varchar(255) not null, primary key (id)) alter table FIRST.FirstChild add constraint FK... foreign key (parent_id) references SECOND.SecondParent HHH000389: Unsuccessful: alter table FIRST.FirstChild add constraint FK... foreign key (parent_id) references SECOND.SecondParent
Please note also that
hibernate.hbm2ddl.auto
withcreate
simply reports this error and continues andupdate
fails with aSchemaManagementException: Unable to execute schema management to JDBC target