package com.txtr.hibernatedelta.generator; import java.sql.SQLException; import liquibase.database.Database; import liquibase.exception.DatabaseException; import liquibase.snapshot.JdbcDatabaseSnapshot.CachedRow; import liquibase.snapshot.jvm.ColumnSnapshotGenerator; import liquibase.structure.DatabaseObject; import liquibase.structure.core.Column; import liquibase.structure.core.DataType.ColumnSizeUnit; import liquibase.structure.core.Relation; public class LiquibaseSnapshotGenerator extends ColumnSnapshotGenerator { @Override protected Column readColumn(CachedRow columnMetadataResultSet, Relation table, Database database) throws SQLException, DatabaseException { Column column = super.readColumn(columnMetadataResultSet, table, database); String columnTypeName = columnMetadataResultSet.getString("TYPE_NAME"); if ("VARCHAR2".equals(columnTypeName)) { if (columnMetadataResultSet.getInt("COLUMN_SIZE") == LiquibaseModelFactory.MAX_CHAR_SIZE) { column.getType().setColumnSizeUnit(ColumnSizeUnit.CHAR); } } return column; } @Override public int getPriority(Class<? extends DatabaseObject> objectType, Database database) { return 10; } }