Skip to content

Commit f8b523f

Browse files
committed
HHH-10013 - Adjust default for hibernate.id.new_generator_mappings to true
1 parent 4183672 commit f8b523f

File tree

12 files changed

+33
-13
lines changed

12 files changed

+33
-13
lines changed

documentation/src/main/docbook/mapping/en-US/chapters/id/Identifiers.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,8 +191,8 @@
191191
The discussions below assume that the application is using Hibernate's "new generator mappings" as
192192
indicated by the <literal>hibernate.id.new_generator_mappings</literal> setting or
193193
<methodname>MetadataBuilder.enableNewIdentifierGeneratorSupport</methodname> method during bootstrap.
194-
For legacy reasons the default value for this setting is currently false, however we anticipate it
195-
becoming true at some point. The rest of the discussion here assumes this setting is enabled (true).
194+
This is set to true by default, however if applications set this to false the resolutions discussed
195+
here will be very different. The rest of the discussion here assumes this setting is enabled (true).
196196
</para>
197197
</note>
198198

hibernate-core/src/main/java/org/hibernate/boot/internal/MetadataBuilderImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -686,7 +686,7 @@ public AccessType convert(Object value) {
686686
final boolean useNewIdentifierGenerators = configService.getSetting(
687687
AvailableSettings.USE_NEW_ID_GENERATOR_MAPPINGS,
688688
StandardConverters.BOOLEAN,
689-
false
689+
true
690690
);
691691
if ( useNewIdentifierGenerators ) {
692692
idGenerationTypeInterpreter.disableLegacyFallback();

hibernate-core/src/main/java/org/hibernate/cfg/AvailableSettings.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,9 @@ public interface AvailableSettings {
256256
/**
257257
* Setting which indicates whether or not the new {@link org.hibernate.id.IdentifierGenerator} are used
258258
* for AUTO, TABLE and SEQUENCE.
259-
* Default to false to keep backward compatibility.
259+
* <p/>
260+
* Default is {@code true}. Existing applications may want to disable this (set it {@code false}) for
261+
* upgrade compatibility.
260262
*
261263
* @see MetadataBuilder#enableNewIdentifierGeneratorSupport
262264
*/

hibernate-core/src/main/java/org/hibernate/dialect/Dialect.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -731,9 +731,6 @@ public Class getNativeIdentifierGeneratorClass() {
731731
if ( supportsIdentityColumns() ) {
732732
return IdentityGenerator.class;
733733
}
734-
else if ( supportsSequences() ) {
735-
return SequenceGenerator.class;
736-
}
737734
else {
738735
return SequenceStyleGenerator.class;
739736
}

hibernate-core/src/main/java/org/hibernate/dialect/PostgreSQL81Dialect.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.hibernate.hql.spi.id.local.AfterUseAction;
2929
import org.hibernate.hql.spi.id.local.LocalTemporaryTableBulkIdStrategy;
3030
import org.hibernate.id.SequenceGenerator;
31+
import org.hibernate.id.enhanced.SequenceStyleGenerator;
3132
import org.hibernate.internal.util.JdbcExceptionHelper;
3233
import org.hibernate.procedure.internal.PostgresCallableStatementSupport;
3334
import org.hibernate.procedure.spi.CallableStatementSupport;
@@ -313,7 +314,7 @@ public boolean supportsCaseInsensitiveLike() {
313314

314315
@Override
315316
public Class getNativeIdentifierGeneratorClass() {
316-
return SequenceGenerator.class;
317+
return SequenceStyleGenerator.class;
317318
}
318319

319320
@Override

hibernate-core/src/main/java/org/hibernate/id/factory/internal/DefaultIdentifierGeneratorFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public DefaultIdentifierGeneratorFactory() {
6565
register( "assigned", Assigned.class );
6666
register( "identity", IdentityGenerator.class );
6767
register( "select", SelectGenerator.class );
68-
register( "sequence", SequenceGenerator.class );
68+
register( "sequence", SequenceStyleGenerator.class );
6969
register( "seqhilo", SequenceHiLoGenerator.class );
7070
register( "increment", IncrementGenerator.class );
7171
register( "foreign", ForeignGenerator.class );

hibernate-core/src/test/java/org/hibernate/test/bytecode/enhancement/join/AbstractHHH3949TestTask.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ public void prepare() {
2222
Session session = getFactory().openSession();
2323
Transaction tx = session.beginTransaction();
2424

25+
// it is important that the data associations remain as follows:
26+
// * Johnny <-> Volkswagen Golf
27+
// * Ricky <-> Subaru Impreza
28+
// * Rosy -> none
29+
// * none <- Renault Truck
30+
//
31+
// see #shouldHaveVehicle and #shouldHaveDriver
32+
2533
Person person1 = new Person( "Johnny" );
2634
Person person2 = new Person( "Ricky" );
2735
Person person3 = new Person( "Rosy" );
@@ -46,6 +54,16 @@ public void prepare() {
4654
session.close();
4755
}
4856

57+
protected boolean shouldHaveVehicle(Person person) {
58+
return "Johnny".equals( person.getName() )
59+
|| "Ricky".equals( person.getName() );
60+
}
61+
62+
protected boolean shouldHaveDriver(Vehicle vehicle) {
63+
return "Volkswagen Golf".equals( vehicle.getName() )
64+
|| "Subaru Impreza".equals( vehicle.getName() );
65+
}
66+
4967
protected void cleanup() {
5068
}
5169

hibernate-core/src/test/java/org/hibernate/test/bytecode/enhancement/join/HHH3949TestTask1.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ private void performQueryAndVerifyResults(String query) {
2828
// 4) verify the results
2929
for ( Person person : persons ) {
3030
assertTrue( Hibernate.isInitialized( person ) );
31-
if ( person.getId() < 3 ) {
31+
if ( shouldHaveVehicle( person ) ) {
3232
assertNotNull( person.getVehicle() );
3333
assertTrue( Hibernate.isInitialized( person.getVehicle() ) );
3434
assertNotNull( person.getVehicle().getDriver() );

hibernate-core/src/test/java/org/hibernate/test/bytecode/enhancement/join/HHH3949TestTask2.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public void performQueryAndVerifyResults(String query) {
2424

2525
// 4) verify the results
2626
for ( Vehicle vehicle : vehicles ) {
27-
if ( vehicle.getId() < 3 ) {
27+
if ( shouldHaveDriver( vehicle ) ) {
2828
Assert.assertNotNull( vehicle.getDriver() );
2929
Assert.assertNotNull( vehicle.getDriver().getVehicle() );
3030
}

hibernate-core/src/test/java/org/hibernate/test/bytecode/enhancement/join/HHH3949TestTask3.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public void execute() {
1616
.setFetchMode( "vehicle", FetchMode.JOIN )
1717
.list();
1818
for ( Person person : persons ) {
19-
if ( person.getId() < 3 ) {
19+
if ( shouldHaveVehicle( person ) ) {
2020
Assert.assertNotNull( person.getVehicle() );
2121
Assert.assertNotNull( person.getVehicle().getDriver() );
2222
}

0 commit comments

Comments
 (0)