Skip to content

Commit 1f4162a

Browse files
yrodierebeikov
authored andcommitted
HHH-15069 Fix backwards-incompatible changes for callers of PersistentIdentifierGenerator getters
1 parent 29b896b commit 1f4162a

File tree

8 files changed

+94
-0
lines changed

8 files changed

+94
-0
lines changed

hibernate-core/src/main/java/org/hibernate/id/MultipleHiLoPerTableGenerator.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.hibernate.boot.model.relational.QualifiedName;
2323
import org.hibernate.boot.model.relational.QualifiedNameParser;
2424
import org.hibernate.boot.model.relational.SqlStringGenerationContext;
25+
import org.hibernate.dialect.Dialect;
2526
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
2627
import org.hibernate.engine.jdbc.internal.FormatStyle;
2728
import org.hibernate.engine.jdbc.spi.JdbcServices;
@@ -93,6 +94,8 @@ public class MultipleHiLoPerTableGenerator implements PersistentIdentifierGenera
9394

9495
private QualifiedName qualifiedTableName;
9596
private QualifiedName physicalTableName;
97+
@Deprecated
98+
private String formattedTableNameForLegacyGetter;
9699
private String segmentColumnName;
97100
private String segmentName;
98101
private String valueColumnName;
@@ -343,6 +346,13 @@ public void registerExportables(Database database) {
343346

344347
// allow physical naming strategies a chance to kick in
345348
physicalTableName = table.getQualifiedTableName();
349+
350+
final JdbcEnvironment jdbcEnvironment = database.getJdbcEnvironment();
351+
final Dialect dialect = jdbcEnvironment.getDialect();
352+
this.formattedTableNameForLegacyGetter = jdbcEnvironment.getQualifiedObjectNameFormatter().format(
353+
physicalTableName,
354+
dialect
355+
);
346356
}
347357

348358
@Override
@@ -376,4 +386,8 @@ public void initialize(SqlStringGenerationContext context) {
376386

377387
}
378388

389+
@Deprecated
390+
public Object generatorKey() {
391+
return formattedTableNameForLegacyGetter;
392+
}
379393
}

hibernate-core/src/main/java/org/hibernate/id/PersistentIdentifierGenerator.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,16 @@ public interface PersistentIdentifierGenerator extends IdentifierGenerator {
5858
* The key under which to find the {@link org.hibernate.boot.model.naming.ObjectNameNormalizer} in the config param map.
5959
*/
6060
String IDENTIFIER_NORMALIZER = "identifier_normalizer";
61+
62+
/**
63+
* Return a key unique to the underlying database objects. Prevents us from
64+
* trying to create/remove them multiple times.
65+
*
66+
* @return Object an identifying key for this generator
67+
* @deprecated No longer necessary.
68+
*/
69+
@Deprecated
70+
default Object generatorKey() {
71+
return null;
72+
}
6173
}

hibernate-core/src/main/java/org/hibernate/id/SequenceGenerator.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.hibernate.boot.model.relational.QualifiedNameParser;
2121
import org.hibernate.boot.model.relational.Sequence;
2222
import org.hibernate.boot.model.relational.SqlStringGenerationContext;
23+
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
2324
import org.hibernate.engine.spi.SharedSessionContractImplementor;
2425
import org.hibernate.internal.log.DeprecationLogger;
2526
import org.hibernate.internal.util.config.ConfigurationHelper;
@@ -64,13 +65,26 @@ public class SequenceGenerator
6465

6566
private QualifiedName logicalQualifiedSequenceName;
6667
private QualifiedName physicalSequenceName;
68+
@Deprecated
69+
private String formattedSequenceNameForLegacyGetter;
6770
private Type identifierType;
6871
private String sql;
6972

7073
protected Type getIdentifierType() {
7174
return identifierType;
7275
}
7376

77+
@Override
78+
@Deprecated
79+
public Object generatorKey() {
80+
return getSequenceName();
81+
}
82+
83+
@Deprecated
84+
public String getSequenceName() {
85+
return formattedSequenceNameForLegacyGetter;
86+
}
87+
7488
public QualifiedName getPhysicalSequenceName() {
7589
return physicalSequenceName;
7690
}
@@ -174,6 +188,10 @@ public void registerExportables(Database database) {
174188
);
175189
}
176190
this.physicalSequenceName = sequence.getName();
191+
192+
final JdbcEnvironment jdbcEnvironment = database.getJdbcEnvironment();
193+
this.formattedSequenceNameForLegacyGetter = jdbcEnvironment.getQualifiedObjectNameFormatter()
194+
.format( physicalSequenceName, jdbcEnvironment.getDialect() );
177195
}
178196

179197
@Override

hibernate-core/src/main/java/org/hibernate/id/enhanced/DatabaseStructure.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,17 @@
1919
* @author Steve Ebersole
2020
*/
2121
public interface DatabaseStructure extends ExportableProducer {
22+
23+
/**
24+
* The name of the database structure (table or sequence).
25+
* @deprecated Use {@link #getPhysicalName()} instead.
26+
*/
27+
@Deprecated
28+
default String getName() {
29+
// Not a great implementation, but that'll have to do: it's only for backwards compatibility.
30+
return getPhysicalName().render();
31+
}
32+
2233
/**
2334
* The physical name of the database structure (table or sequence).
2435
* <p>

hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceStructure.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ public class SequenceStructure implements DatabaseStructure {
4343
private String sql;
4444
private boolean applyIncrementSizeToSourceValues;
4545
private int accessCounter;
46+
@Deprecated
47+
private String formattedSequenceNameForLegacyGetter;
4648
protected QualifiedName physicalSequenceName;
4749

4850
public SequenceStructure(
@@ -58,6 +60,12 @@ public SequenceStructure(
5860
this.numberType = numberType;
5961
}
6062

63+
@Override
64+
@Deprecated
65+
public String getName() {
66+
return formattedSequenceNameForLegacyGetter;
67+
}
68+
6169
@Override
6270
public QualifiedName getPhysicalName() {
6371
return physicalSequenceName;
@@ -181,5 +189,9 @@ protected void buildSequence(Database database) {
181189
}
182190

183191
this.physicalSequenceName = sequence.getName();
192+
193+
final JdbcEnvironment jdbcEnvironment = database.getJdbcEnvironment();
194+
this.formattedSequenceNameForLegacyGetter = jdbcEnvironment.getQualifiedObjectNameFormatter()
195+
.format( physicalSequenceName, jdbcEnvironment.getDialect() );
184196
}
185197
}

hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceStyleGenerator.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,16 @@ public Serializable generate(SharedSessionContractImplementor session, Object ob
534534
return optimizer.generate( databaseStructure.buildCallback( session ) );
535535
}
536536

537+
538+
// PersistentIdentifierGenerator implementation ~~~~~~~~~~~~~~~~~~~~~~~~~~~
539+
540+
@Override
541+
@Deprecated
542+
public Object generatorKey() {
543+
return databaseStructure.getName();
544+
}
545+
546+
537547
// BulkInsertionCapableIdentifierGenerator implementation ~~~~~~~~~~~~~~~~~
538548

539549
@Override

hibernate-core/src/main/java/org/hibernate/id/enhanced/TableGenerator.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,12 @@ public class TableGenerator implements PersistentIdentifierGenerator {
249249
private Optimizer optimizer;
250250
private long accessCount;
251251

252+
@Override
253+
@Deprecated
254+
public Object generatorKey() {
255+
return qualifiedTableName.render();
256+
}
257+
252258
/**
253259
* Type mapping for the identifier.
254260
*

hibernate-core/src/main/java/org/hibernate/id/enhanced/TableStructure.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ public class TableStructure implements DatabaseStructure {
5555
private final Class numberType;
5656

5757
private QualifiedName physicalTableName;
58+
@Deprecated
59+
private String formattedTableNameForLegacyGetter;
5860
private String valueColumnNameText;
5961

6062
private String selectQuery;
@@ -78,6 +80,12 @@ public TableStructure(
7880
this.numberType = numberType;
7981
}
8082

83+
@Override
84+
@Deprecated
85+
public String getName() {
86+
return formattedTableNameForLegacyGetter;
87+
}
88+
8189
@Override
8290
public QualifiedName getPhysicalName() {
8391
return physicalTableName;
@@ -247,6 +255,9 @@ public void registerExportables(Database database) {
247255
}
248256
this.physicalTableName = table.getQualifiedTableName();
249257

258+
this.formattedTableNameForLegacyGetter = jdbcEnvironment.getQualifiedObjectNameFormatter()
259+
.format( physicalTableName, dialect );
260+
250261
valueColumnNameText = logicalValueColumnNameIdentifier.render( dialect );
251262
if ( tableCreated ) {
252263
ExportableColumn valueColumn = new ExportableColumn(

0 commit comments

Comments
 (0)