ForeignKey fk = new ForeignKey(); fk.setName(hibernateForeignKey.getName()); fk.setPrimaryKeyTable(referencedTable); fk.setForeignKeyTable(currentTable); for (Object column : hibernateForeignKey.getColumns()) { fk.addForeignKeyColumn(new liquibase.structure.core.Column(((org.hibernate.mapping.Column) column).getName())); fk.addPrimaryKeyColumn(new liquibase.structure.core.Column(((org.hibernate.mapping.Column) column).getName())); if (fk.getPrimaryKeyColumns() == null || fk.getPrimaryKeyColumns().isEmpty()) { for (Object column : hibernateReferencedTable.getPrimaryKey().getColumns()) { fk.addPrimaryKeyColumn(new liquibase.structure.core.Column(((org.hibernate.mapping.Column) column).getName())); fk.setDeferrable(false); fk.setInitiallyDeferred(false);
protected void syncForeignKeys(DatabaseSnapshot databaseSnapshot, Schema sourceSchema, Schema targetSchema) { logger.info("Synchronizing foreign keys"); for(liquibase.structure.core.ForeignKey liquibaseFK : databaseSnapshot.get(liquibase.structure.core.ForeignKey.class)) { String fkName = liquibaseFK.getName(); logger.info("Synchronizing foreign key {}", fkName); String fkTableName = liquibaseFK.getForeignKeyTable().getName(); Table sourceTable = DatabaseLogic.findTableByNameIgnoreCase(sourceSchema, fkTableName); liquibaseFK.getPrimaryKeyTable(); liquibaseFK.getUpdateRule(); if (updateRule == null) { updateRule = ForeignKeyConstraintType.importedKeyRestrict; liquibaseFK.getDeleteRule(); if (deleteRule == null) { deleteRule = ForeignKeyConstraintType.importedKeyRestrict; List<liquibase.structure.core.Column> fromColumns = liquibaseFK.getForeignKeyColumns(); List<liquibase.structure.core.Column> toColumns = liquibaseFK.getPrimaryKeyColumns(); if(fromColumns.size() != toColumns.size()) { logger.error("Invalid foreign key {} - columns don't match", fkName);
protected void syncForeignKeys(DatabaseSnapshot databaseSnapshot, Schema sourceSchema, Schema targetSchema) { logger.info("Synchronizing foreign keys"); for(liquibase.structure.core.ForeignKey liquibaseFK : databaseSnapshot.get(liquibase.structure.core.ForeignKey.class)) { String fkName = liquibaseFK.getName(); logger.info("Synchronizing foreign key {}", fkName); String fkTableName = liquibaseFK.getForeignKeyTable().getName(); Table sourceTable = DatabaseLogic.findTableByNameIgnoreCase(sourceSchema, fkTableName); liquibaseFK.getPrimaryKeyTable(); liquibaseFK.getUpdateRule(); if (updateRule == null) { updateRule = ForeignKeyConstraintType.importedKeyRestrict; liquibaseFK.getDeleteRule(); if (deleteRule == null) { deleteRule = ForeignKeyConstraintType.importedKeyRestrict; List<liquibase.structure.core.Column> fromColumns = liquibaseFK.getForeignKeyColumns(); List<liquibase.structure.core.Column> toColumns = liquibaseFK.getPrimaryKeyColumns(); if(fromColumns.size() != toColumns.size()) { logger.error("Invalid foreign key {} - columns don't match", fkName);