PrimaryKey pk = new PrimaryKey(); String hbnPrimaryKeyName = hibernatePrimaryKey.getName(); pk.setName(hbnPrimaryKeyName); pk.setTable(table); for (Object hibernateColumn : hibernatePrimaryKey.getColumns()) { pk.getColumns().add(new Column(((org.hibernate.mapping.Column) hibernateColumn).getName()).setRelation(table)); LOG.info("Found primary key " + pk.getName()); table.setPrimaryKey(pk); Index index = new Index(); index.setName("IX_" + pk.getName()); index.setTable(table); index.setColumns(pk.getColumns()); index.setUnique(true); pk.setBackingIndex(index); table.getIndexes().add(index);
protected void syncPrimaryKeys(DatabaseSnapshot databaseSnapshot, Schema sourceSchema, Schema targetSchema) { logger.info("Synchronizing primary keys"); for(liquibase.structure.core.PrimaryKey liquibasePK : databaseSnapshot.get(liquibase.structure.core.PrimaryKey.class)) { String pkTableName = liquibasePK.getTable().getName(); String primaryKeyName = liquibasePK.getName(); targetPK.setPrimaryKeyName(primaryKeyName); List<String> columnNamesAsList = liquibasePK.getColumnNamesAsList(); if (columnNamesAsList == null || columnNamesAsList.isEmpty()) { logger.error("Primary key (table: {}, pk: {}) has no columns. Skipping PK.",
@Override public Table snapshot(IdentifierGenerator ig) { TableGenerator tableGenerator = (TableGenerator) ig; Table table = new Table().setName(tableGenerator.getTableName()); Column pkColumn = new Column(); pkColumn.setName(tableGenerator.getSegmentColumnName()); DataType pkDataType = new DataType(PK_DATA_TYPE); pkDataType.setColumnSize(tableGenerator.getSegmentValueLength()); pkColumn.setType(pkDataType); pkColumn.setCertainDataType(false); pkColumn.setRelation(table); table.getColumns().add(pkColumn); PrimaryKey primaryKey = new PrimaryKey(); primaryKey.setName(tableGenerator.getTableName() + "PK"); primaryKey.addColumn(0, new Column(pkColumn.getName()).setRelation(table)); primaryKey.setTable(table); table.setPrimaryKey(primaryKey); Column valueColumn = new Column(); valueColumn.setName(tableGenerator.getValueColumnName()); valueColumn.setType(new DataType(VALUE_DATA_TYPE)); valueColumn.setNullable(false); valueColumn.setCertainDataType(false); valueColumn.setRelation(table); table.getColumns().add(valueColumn); return table; }
primaryKey = new PrimaryKey(); primaryKey.setName(hibernatePrimaryKey.getName()); primaryKey.addColumnName(pkColumnPosition++, column.getName());
protected void syncPrimaryKeys(DatabaseSnapshot databaseSnapshot, Schema sourceSchema, Schema targetSchema) { logger.info("Synchronizing primary keys"); for(liquibase.structure.core.PrimaryKey liquibasePK : databaseSnapshot.get(liquibase.structure.core.PrimaryKey.class)) { String pkTableName = liquibasePK.getTable().getName(); String primaryKeyName = liquibasePK.getName(); targetPK.setPrimaryKeyName(primaryKeyName); List<String> columnNamesAsList = liquibasePK.getColumnNamesAsList(); if (columnNamesAsList == null || columnNamesAsList.isEmpty()) { logger.error("Primary key (table: {}, pk: {}) has no columns. Skipping PK.",