|
13 | 13 |
|
14 | 14 | import org.hibernate.boot.Metadata;
|
15 | 15 | import org.hibernate.boot.model.naming.Identifier;
|
| 16 | +import org.hibernate.boot.model.relational.AuxiliaryDatabaseObject; |
16 | 17 | import org.hibernate.boot.model.relational.Database;
|
17 | 18 | import org.hibernate.boot.model.relational.Exportable;
|
18 | 19 | import org.hibernate.boot.model.relational.Namespace;
|
@@ -72,6 +73,38 @@ protected void doMigrationToTargets(
|
72 | 73 | final Set<String> exportIdentifiers = new HashSet<String>( 50 );
|
73 | 74 |
|
74 | 75 | final Database database = metadata.getDatabase();
|
| 76 | + final JdbcEnvironment jdbcEnvironment = database.getJdbcEnvironment(); |
| 77 | + final Dialect dialect = jdbcEnvironment.getDialect(); |
| 78 | + |
| 79 | + // Drop all AuxiliaryDatabaseObjects |
| 80 | + for ( AuxiliaryDatabaseObject auxiliaryDatabaseObject : database.getAuxiliaryDatabaseObjects() ) { |
| 81 | + if ( !auxiliaryDatabaseObject.appliesToDialect( dialect ) ) { |
| 82 | + continue; |
| 83 | + } |
| 84 | + |
| 85 | + applySqlStrings( |
| 86 | + dialect.getAuxiliaryDatabaseObjectExporter().getSqlDropStrings( auxiliaryDatabaseObject, metadata ), |
| 87 | + targets, |
| 88 | + true |
| 89 | + ); |
| 90 | + } |
| 91 | + |
| 92 | + // Create before-table AuxiliaryDatabaseObjects |
| 93 | + for ( AuxiliaryDatabaseObject auxiliaryDatabaseObject : database.getAuxiliaryDatabaseObjects() ) { |
| 94 | + if ( auxiliaryDatabaseObject.beforeTablesOnCreation() ) { |
| 95 | + continue; |
| 96 | + } |
| 97 | + if ( !auxiliaryDatabaseObject.appliesToDialect( dialect ) ) { |
| 98 | + continue; |
| 99 | + } |
| 100 | + |
| 101 | + applySqlStrings( |
| 102 | + auxiliaryDatabaseObject.sqlCreateStrings( jdbcEnvironment.getDialect() ), |
| 103 | + targets, |
| 104 | + true |
| 105 | + ); |
| 106 | + } |
| 107 | + |
75 | 108 | boolean tryToCreateCatalogs = false;
|
76 | 109 | boolean tryToCreateSchemas = false;
|
77 | 110 |
|
@@ -175,6 +208,22 @@ protected void doMigrationToTargets(
|
175 | 208 | );
|
176 | 209 | }
|
177 | 210 | }
|
| 211 | + |
| 212 | + // Create after-table AuxiliaryDatabaseObjects |
| 213 | + for ( AuxiliaryDatabaseObject auxiliaryDatabaseObject : database.getAuxiliaryDatabaseObjects() ) { |
| 214 | + if ( !auxiliaryDatabaseObject.beforeTablesOnCreation() ) { |
| 215 | + continue; |
| 216 | + } |
| 217 | + if ( !auxiliaryDatabaseObject.appliesToDialect( dialect ) ) { |
| 218 | + continue; |
| 219 | + } |
| 220 | + |
| 221 | + applySqlStrings( |
| 222 | + auxiliaryDatabaseObject.sqlCreateStrings( jdbcEnvironment.getDialect() ), |
| 223 | + targets, |
| 224 | + true |
| 225 | + ); |
| 226 | + } |
178 | 227 | }
|
179 | 228 |
|
180 | 229 | private void createTable(Table table, Metadata metadata, List<Target> targets) {
|
|
0 commit comments