Skip to content

Commit 7f50bc5

Browse files
feat: Implement missing replaces() method in all snapshot generators (#764)
Add overridden replaces() method to all Hibernate snapshot generator classes to explicitly replace the corresponding snapshot generators from core Liquibase. This ensures that Liquibase uses the Hibernate-specific implementations instead of the default ones.
1 parent 79d230f commit 7f50bc5

10 files changed

+57
-3
lines changed

src/main/java/liquibase/ext/hibernate/snapshot/CatalogSnapshotGenerator.java

+5
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import liquibase.exception.DatabaseException;
44
import liquibase.snapshot.DatabaseSnapshot;
55
import liquibase.snapshot.InvalidExampleException;
6+
import liquibase.snapshot.SnapshotGenerator;
67
import liquibase.structure.DatabaseObject;
78
import liquibase.structure.core.Catalog;
89

@@ -26,4 +27,8 @@ protected void addTo(DatabaseObject foundObject, DatabaseSnapshot snapshot) thro
2627
// Nothing to add to
2728
}
2829

30+
@Override
31+
public Class<? extends SnapshotGenerator>[] replaces() {
32+
return new Class[]{liquibase.snapshot.jvm.CatalogSnapshotGenerator.class};
33+
}
2934
}

src/main/java/liquibase/ext/hibernate/snapshot/ColumnSnapshotGenerator.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package liquibase.ext.hibernate.snapshot;
22

3-
import java.util.Iterator;
43
import java.util.List;
54
import java.util.Properties;
65
import java.util.regex.Matcher;
76
import java.util.regex.Pattern;
87

8+
import liquibase.snapshot.SnapshotGenerator;
99
import org.hibernate.boot.spi.MetadataImplementor;
1010
import org.hibernate.dialect.Dialect;
1111
import org.hibernate.dialect.PostgreSQLDialect;
@@ -226,4 +226,9 @@ protected DataType toDataType(String hibernateType, Integer sqlTypeCode) throws
226226
return dataType;
227227
}
228228

229+
@Override
230+
public Class<? extends SnapshotGenerator>[] replaces() {
231+
return new Class[]{liquibase.snapshot.jvm.ColumnSnapshotGenerator.class};
232+
}
233+
229234
}

src/main/java/liquibase/ext/hibernate/snapshot/ForeignKeySnapshotGenerator.java

+6
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import liquibase.ext.hibernate.database.HibernateDatabase;
66
import liquibase.snapshot.DatabaseSnapshot;
77
import liquibase.snapshot.InvalidExampleException;
8+
import liquibase.snapshot.SnapshotGenerator;
89
import liquibase.structure.DatabaseObject;
910
import liquibase.structure.core.ForeignKey;
1011
import liquibase.structure.core.Table;
@@ -85,4 +86,9 @@ protected void addTo(DatabaseObject foundObject, DatabaseSnapshot snapshot) thro
8586
}
8687
}
8788

89+
@Override
90+
public Class<? extends SnapshotGenerator>[] replaces() {
91+
return new Class[]{ liquibase.snapshot.jvm.ForeignKeySnapshotGenerator.class };
92+
}
93+
8894
}

src/main/java/liquibase/ext/hibernate/snapshot/IndexSnapshotGenerator.java

+6
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import liquibase.exception.DatabaseException;
55
import liquibase.snapshot.DatabaseSnapshot;
66
import liquibase.snapshot.InvalidExampleException;
7+
import liquibase.snapshot.SnapshotGenerator;
78
import liquibase.structure.DatabaseObject;
89
import liquibase.structure.core.*;
910

@@ -91,4 +92,9 @@ private Boolean isUniqueIndex(org.hibernate.mapping.Index hibernateIndex) {
9192
return false;
9293
}
9394
}
95+
96+
@Override
97+
public Class<? extends SnapshotGenerator>[] replaces() {
98+
return new Class[]{liquibase.snapshot.jvm.IndexSnapshotGenerator.class};
99+
}
94100
}

src/main/java/liquibase/ext/hibernate/snapshot/PrimaryKeySnapshotGenerator.java

+6
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import liquibase.exception.DatabaseException;
55
import liquibase.snapshot.DatabaseSnapshot;
66
import liquibase.snapshot.InvalidExampleException;
7+
import liquibase.snapshot.SnapshotGenerator;
78
import liquibase.structure.DatabaseObject;
89
import liquibase.structure.core.Column;
910
import liquibase.structure.core.Index;
@@ -67,4 +68,9 @@ protected void addTo(DatabaseObject foundObject, DatabaseSnapshot snapshot) thro
6768
}
6869
}
6970

71+
@Override
72+
public Class<? extends SnapshotGenerator>[] replaces() {
73+
return new Class[]{liquibase.snapshot.jvm.PrimaryKeySnapshotGenerator.class};
74+
}
75+
7076
}

src/main/java/liquibase/ext/hibernate/snapshot/SchemaSnapshotGenerator.java

+6
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import liquibase.exception.DatabaseException;
44
import liquibase.snapshot.DatabaseSnapshot;
55
import liquibase.snapshot.InvalidExampleException;
6+
import liquibase.snapshot.SnapshotGenerator;
67
import liquibase.structure.DatabaseObject;
78
import liquibase.structure.core.Catalog;
89
import liquibase.structure.core.Schema;
@@ -26,4 +27,9 @@ protected void addTo(DatabaseObject foundObject, DatabaseSnapshot snapshot) thro
2627
// Nothing to do
2728
}
2829

30+
@Override
31+
public Class<? extends SnapshotGenerator>[] replaces() {
32+
return new Class[]{liquibase.snapshot.jvm.SchemaSnapshotGenerator.class};
33+
}
34+
2935
}

src/main/java/liquibase/ext/hibernate/snapshot/SequenceSnapshotGenerator.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import liquibase.ext.hibernate.database.HibernateDatabase;
55
import liquibase.snapshot.DatabaseSnapshot;
66
import liquibase.snapshot.InvalidExampleException;
7+
import liquibase.snapshot.SnapshotGenerator;
78
import liquibase.structure.DatabaseObject;
89
import liquibase.structure.core.Schema;
910
import liquibase.structure.core.Sequence;
@@ -46,6 +47,8 @@ protected void addTo(DatabaseObject foundObject, DatabaseSnapshot snapshot) thro
4647
}
4748
}
4849

49-
50-
50+
@Override
51+
public Class<? extends SnapshotGenerator>[] replaces() {
52+
return new Class[]{ liquibase.snapshot.jvm.SequenceSnapshotGenerator.class };
53+
}
5154
}

src/main/java/liquibase/ext/hibernate/snapshot/TableSnapshotGenerator.java

+6
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import liquibase.ext.hibernate.snapshot.extension.TableGeneratorSnapshotGenerator;
88
import liquibase.snapshot.DatabaseSnapshot;
99
import liquibase.snapshot.InvalidExampleException;
10+
import liquibase.snapshot.SnapshotGenerator;
1011
import liquibase.structure.DatabaseObject;
1112
import liquibase.structure.core.Schema;
1213
import liquibase.structure.core.Table;
@@ -118,4 +119,9 @@ private void addDatabaseObjectToSchema(org.hibernate.mapping.Table join, Schema
118119
Scope.getCurrentScope().getLog(getClass()).info("Found table " + joinTable.getName());
119120
schema.addDatabaseObject(snapshotObject(joinTable, snapshot));
120121
}
122+
123+
@Override
124+
public Class<? extends SnapshotGenerator>[] replaces() {
125+
return new Class[]{liquibase.snapshot.jvm.TableSnapshotGenerator.class};
126+
}
121127
}

src/main/java/liquibase/ext/hibernate/snapshot/UniqueConstraintSnapshotGenerator.java

+6
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import liquibase.exception.DatabaseException;
55
import liquibase.snapshot.DatabaseSnapshot;
66
import liquibase.snapshot.InvalidExampleException;
7+
import liquibase.snapshot.SnapshotGenerator;
78
import liquibase.structure.DatabaseObject;
89
import liquibase.structure.core.Column;
910
import liquibase.structure.core.Index;
@@ -112,4 +113,9 @@ protected Index getBackingIndex(UniqueConstraint uniqueConstraint, org.hibernate
112113
return index;
113114
}
114115

116+
@Override
117+
public Class<? extends SnapshotGenerator>[] replaces() {
118+
return new Class[]{ liquibase.snapshot.jvm.UniqueConstraintSnapshotGenerator.class };
119+
}
120+
115121
}

src/main/java/liquibase/ext/hibernate/snapshot/ViewSnapshotGenerator.java

+5
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import liquibase.exception.DatabaseException;
44
import liquibase.snapshot.DatabaseSnapshot;
55
import liquibase.snapshot.InvalidExampleException;
6+
import liquibase.snapshot.SnapshotGenerator;
67
import liquibase.structure.DatabaseObject;
78
import liquibase.structure.core.Schema;
89
import liquibase.structure.core.View;
@@ -24,7 +25,11 @@ protected DatabaseObject snapshotObject(DatabaseObject example, DatabaseSnapshot
2425
@Override
2526
protected void addTo(DatabaseObject foundObject, DatabaseSnapshot snapshot) throws DatabaseException, InvalidExampleException {
2627
// No views in Hibernate mapping
28+
}
2729

30+
@Override
31+
public Class<? extends SnapshotGenerator>[] replaces() {
32+
return new Class[]{ liquibase.snapshot.jvm.ViewSnapshotGenerator.class };
2833
}
2934

3035
}

0 commit comments

Comments
 (0)