diff --git a/documentation/src/main/asciidoc/userguide/chapters/batch/Batching.adoc b/documentation/src/main/asciidoc/userguide/chapters/batch/Batching.adoc index 21922fcb57..0d13939203 100644 --- a/documentation/src/main/asciidoc/userguide/chapters/batch/Batching.adoc +++ b/documentation/src/main/asciidoc/userguide/chapters/batch/Batching.adoc @@ -275,11 +275,10 @@ Problems might result from Hibernate types which are equivalent, rather than equ One such example is a mismatch between a property defined as an `org.hibernate.type.StandardBasicTypes.DATE` and a property defined as an `org.hibernate.type.StandardBasicTypes.TIMESTAMP`, even though the database may not make a distinction, or may be capable of handling the conversion. -If id property is not specified in the `properties_list`, -Hibernate generates a value automatically. +If id property is not specified in the `properties_list`, Hibernate generates a value automatically. Automatic generation is only available if you use ID generators which operate on the database. -Otherwise, Hibernate throws an exception during parsing. -Available in-database generators are `org.hibernate.id.SequenceGenerator` and its subclasses, and objects which implement `org.hibernate.id.PostInsertIdentifierGenerator`. +Otherwise, Hibernate throws an exception during parsing. Available in-database generators implement +`org.hibernate.id.PostInsertIdentifierGenerator`. For properties mapped as either version or timestamp, the insert statement gives you two options. You can either specify the property in the properties_list, in which case its value is taken from the corresponding select expressions or omit it from the properties_list, diff --git a/hibernate-core/src/main/java/org/hibernate/boot/MetadataBuilder.java b/hibernate-core/src/main/java/org/hibernate/boot/MetadataBuilder.java index 6f07c374d1..79eb4d9455 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/MetadataBuilder.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/MetadataBuilder.java @@ -6,9 +6,6 @@ */ package org.hibernate.boot; -import jakarta.persistence.AttributeConverter; -import jakarta.persistence.SharedCacheMode; - import org.hibernate.boot.archive.scan.spi.ScanEnvironment; import org.hibernate.boot.archive.scan.spi.ScanOptions; import org.hibernate.boot.archive.scan.spi.Scanner; @@ -27,6 +24,9 @@ import org.jboss.jandex.IndexView; +import jakarta.persistence.AttributeConverter; +import jakarta.persistence.SharedCacheMode; + /** * Contract for specifying various overrides to be used in metamodel building. * @@ -186,28 +186,6 @@ public interface MetadataBuilder { */ MetadataBuilder applyArchiveDescriptorFactory(ArchiveDescriptorFactory factory); - /** - * Should we enable support for the "new" (since 3.2) identifier generator mappings for - * handling: - *

- * Its default is defined by the {@link org.hibernate.cfg.AvailableSettings#USE_NEW_ID_GENERATOR_MAPPINGS} - * setting if using property-based configuration. - * - * - * @param enable {@code true} to enable; {@code false} to disable; don't call for - * default. - * - * @return {@code this}, for method chaining - * - * @see org.hibernate.cfg.AvailableSettings#USE_NEW_ID_GENERATOR_MAPPINGS - */ - MetadataBuilder enableNewIdentifierGeneratorSupport(boolean enable); - /** * Should we process or ignore explicitly defined discriminators in the case * of joined-subclasses. The legacy behavior of Hibernate was to ignore the diff --git a/hibernate-core/src/main/java/org/hibernate/boot/internal/IdGeneratorInterpreterImpl.java b/hibernate-core/src/main/java/org/hibernate/boot/internal/IdGeneratorInterpreterImpl.java index a995979de4..1caef8b939 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/internal/IdGeneratorInterpreterImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/internal/IdGeneratorInterpreterImpl.java @@ -8,23 +8,21 @@ import java.util.ArrayList; import java.util.UUID; -import jakarta.persistence.GenerationType; -import jakarta.persistence.SequenceGenerator; -import jakarta.persistence.TableGenerator; import org.hibernate.boot.model.IdGeneratorStrategyInterpreter; import org.hibernate.boot.model.IdentifierGeneratorDefinition; -import org.hibernate.cfg.AvailableSettings; import org.hibernate.cfg.BinderHelper; import org.hibernate.id.IncrementGenerator; -import org.hibernate.id.MultipleHiLoPerTableGenerator; import org.hibernate.id.PersistentIdentifierGenerator; -import org.hibernate.id.SequenceHiLoGenerator; import org.hibernate.id.UUIDGenerator; import org.hibernate.id.enhanced.SequenceStyleGenerator; import org.hibernate.internal.CoreLogging; import org.hibernate.internal.CoreMessageLogger; +import jakarta.persistence.GenerationType; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.TableGenerator; + /** * The root (composition) IdGenerationTypeInterpreter. * @@ -75,14 +73,6 @@ public void interpretSequenceGenerator( } } - public void enableLegacyFallback() { - fallbackInterpreter = LegacyFallbackInterpreter.INSTANCE; - } - - public void disableLegacyFallback() { - fallbackInterpreter = FallbackInterpreter.INSTANCE; - } - public void addInterpreterDelegate(IdGeneratorStrategyInterpreter delegate) { if ( delegates == null ) { delegates = new ArrayList<>(); @@ -90,118 +80,6 @@ public void addInterpreterDelegate(IdGeneratorStrategyInterpreter delegate) { delegates.add( delegate ); } - private static class LegacyFallbackInterpreter implements IdGeneratorStrategyInterpreter { - /** - * Singleton access - */ - public static final LegacyFallbackInterpreter INSTANCE = new LegacyFallbackInterpreter(); - - @Override - public String determineGeneratorName(GenerationType generationType, GeneratorNameDeterminationContext context) { - switch ( generationType ) { - case IDENTITY: { - return "identity"; - } - case SEQUENCE: { - return "seqhilo"; - } - case TABLE: { - return MultipleHiLoPerTableGenerator.class.getName(); - } - default: { - // AUTO - - if ( "increment".equalsIgnoreCase( context.getGeneratedValueGeneratorName() ) ) { - return IncrementGenerator.class.getName(); - } - - final Class javaType = context.getIdType(); - if ( UUID.class.isAssignableFrom( javaType ) ) { - return UUIDGenerator.class.getName(); - } - - return "native"; - } - } - } - - @Override - public void interpretTableGenerator( - TableGenerator tableGeneratorAnnotation, - IdentifierGeneratorDefinition.Builder definitionBuilder) { - definitionBuilder.setName( tableGeneratorAnnotation.name() ); - definitionBuilder.setStrategy( MultipleHiLoPerTableGenerator.class.getName() ); - - if ( !BinderHelper.isEmptyAnnotationValue( tableGeneratorAnnotation.table() ) ) { - definitionBuilder.addParam( - MultipleHiLoPerTableGenerator.ID_TABLE, - tableGeneratorAnnotation.table() - ); - } - if ( !BinderHelper.isEmptyAnnotationValue( tableGeneratorAnnotation.catalog() ) ) { - definitionBuilder.addParam( - PersistentIdentifierGenerator.CATALOG, - tableGeneratorAnnotation.catalog() - ); - } - if ( !BinderHelper.isEmptyAnnotationValue( tableGeneratorAnnotation.schema() ) ) { - definitionBuilder.addParam( - PersistentIdentifierGenerator.SCHEMA, - tableGeneratorAnnotation.schema() - ); - } - - if ( !BinderHelper.isEmptyAnnotationValue( tableGeneratorAnnotation.pkColumnName() ) ) { - definitionBuilder.addParam( - MultipleHiLoPerTableGenerator.PK_COLUMN_NAME, - tableGeneratorAnnotation.pkColumnName() - ); - } - if ( !BinderHelper.isEmptyAnnotationValue( tableGeneratorAnnotation.valueColumnName() ) ) { - definitionBuilder.addParam( - MultipleHiLoPerTableGenerator.VALUE_COLUMN_NAME, - tableGeneratorAnnotation.valueColumnName() - ); - } - if ( !BinderHelper.isEmptyAnnotationValue( tableGeneratorAnnotation.pkColumnValue() ) ) { - definitionBuilder.addParam( - MultipleHiLoPerTableGenerator.PK_VALUE_NAME, - tableGeneratorAnnotation.pkColumnValue() - ); - } - definitionBuilder.addParam( - MultipleHiLoPerTableGenerator.MAX_LO, - String.valueOf( tableGeneratorAnnotation.allocationSize() - 1 ) - ); - - // TODO : implement unique-constraint support - if ( tableGeneratorAnnotation.uniqueConstraints() != null - && tableGeneratorAnnotation.uniqueConstraints().length > 0 ) { - log.ignoringTableGeneratorConstraints( tableGeneratorAnnotation.name() ); - } - } - - @Override - @SuppressWarnings("deprecation") - public void interpretSequenceGenerator( - SequenceGenerator sequenceGeneratorAnnotation, - IdentifierGeneratorDefinition.Builder definitionBuilder) { - definitionBuilder.setName( sequenceGeneratorAnnotation.name() ); - - definitionBuilder.setStrategy( "seqhilo" ); - - if ( !BinderHelper.isEmptyAnnotationValue( sequenceGeneratorAnnotation.sequenceName() ) ) { - definitionBuilder.addParam( org.hibernate.id.SequenceGenerator.SEQUENCE, sequenceGeneratorAnnotation.sequenceName() ); - } - //FIXME: work on initialValue() through SequenceGenerator.PARAMETERS - // steve : or just use o.h.id.enhanced.SequenceStyleGenerator - if ( sequenceGeneratorAnnotation.initialValue() != 1 ) { - log.unsupportedInitialValue( AvailableSettings.USE_NEW_ID_GENERATOR_MAPPINGS ); - } - definitionBuilder.addParam( SequenceHiLoGenerator.MAX_LO, String.valueOf( sequenceGeneratorAnnotation.allocationSize() - 1 ) ); - } - } - private static class FallbackInterpreter implements IdGeneratorStrategyInterpreter { /** * Singleton access diff --git a/hibernate-core/src/main/java/org/hibernate/boot/internal/MetadataBuilderImpl.java b/hibernate-core/src/main/java/org/hibernate/boot/internal/MetadataBuilderImpl.java index a9d476b90c..b845708d9b 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/internal/MetadataBuilderImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/internal/MetadataBuilderImpl.java @@ -10,9 +10,6 @@ import java.util.Collections; import java.util.List; import java.util.concurrent.Callable; -import jakarta.persistence.AttributeConverter; -import jakarta.persistence.ConstraintMode; -import jakarta.persistence.SharedCacheMode; import org.hibernate.HibernateException; import org.hibernate.MultiTenancyStrategy; @@ -79,6 +76,10 @@ import org.jboss.jandex.IndexView; +import jakarta.persistence.AttributeConverter; +import jakarta.persistence.ConstraintMode; +import jakarta.persistence.SharedCacheMode; + /** * @author Steve Ebersole */ @@ -379,17 +380,6 @@ public MetadataBuilder applyAttributeConverter(AttributeConverter attributeConve return this; } - @Override - public MetadataBuilder enableNewIdentifierGeneratorSupport(boolean enabled) { - if ( enabled ) { - this.options.idGenerationTypeInterpreter.disableLegacyFallback(); - } - else { - this.options.idGenerationTypeInterpreter.enableLegacyFallback(); - } - return this; - } - @Override public MetadataBuilder applyIdGenerationTypeInterpreter(IdGeneratorStrategyInterpreter interpreter) { this.options.idGenerationTypeInterpreter.addInterpreterDelegate( interpreter ); @@ -688,18 +678,6 @@ public ImplicitNamingStrategy call() { this.sourceProcessOrdering = resolveInitialSourceProcessOrdering( configService ); - final boolean useNewIdentifierGenerators = configService.getSetting( - AvailableSettings.USE_NEW_ID_GENERATOR_MAPPINGS, - StandardConverters.BOOLEAN, - true - ); - if ( useNewIdentifierGenerators ) { - this.idGenerationTypeInterpreter.disableLegacyFallback(); - } - else { - this.idGenerationTypeInterpreter.enableLegacyFallback(); - } - this.useNationalizedCharacterData = configService.getSetting( AvailableSettings.USE_NATIONALIZED_CHARACTER_DATA, StandardConverters.BOOLEAN, diff --git a/hibernate-core/src/main/java/org/hibernate/boot/model/relational/NamedAuxiliaryDatabaseObject.java b/hibernate-core/src/main/java/org/hibernate/boot/model/relational/NamedAuxiliaryDatabaseObject.java index 9d9eb11c57..4cc8bb3c64 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/model/relational/NamedAuxiliaryDatabaseObject.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/model/relational/NamedAuxiliaryDatabaseObject.java @@ -12,10 +12,6 @@ /** * Mainly this is used to support legacy sequence exporting. - * - * @author Steve Ebersole - * - * @see org.hibernate.id.SequenceGenerator */ public class NamedAuxiliaryDatabaseObject extends SimpleAuxiliaryDatabaseObject @@ -32,16 +28,6 @@ public NamedAuxiliaryDatabaseObject( this.name = name; } - public NamedAuxiliaryDatabaseObject( - String name, - Namespace namespace, - String[] createStrings, - String[] dropStrings, - Set dialectScopes) { - super( namespace, createStrings, dropStrings, dialectScopes ); - this.name = name; - } - @Override public String getExportIdentifier() { return new QualifiedNameImpl( diff --git a/hibernate-core/src/main/java/org/hibernate/boot/spi/AbstractDelegatingMetadataBuilderImplementor.java b/hibernate-core/src/main/java/org/hibernate/boot/spi/AbstractDelegatingMetadataBuilderImplementor.java index c624cf73fd..3e586f7a81 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/spi/AbstractDelegatingMetadataBuilderImplementor.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/spi/AbstractDelegatingMetadataBuilderImplementor.java @@ -134,12 +134,6 @@ public MetadataBuilder applyArchiveDescriptorFactory(ArchiveDescriptorFactory fa return getThis(); } - @Override - public MetadataBuilder enableNewIdentifierGeneratorSupport(boolean enable) { - delegate.enableNewIdentifierGeneratorSupport( enable ); - return getThis(); - } - @Override public MetadataBuilder enableExplicitDiscriminatorsForJoinedSubclassSupport(boolean enabled) { delegate.enableExplicitDiscriminatorsForJoinedSubclassSupport( enabled ); diff --git a/hibernate-core/src/main/java/org/hibernate/cfg/AvailableSettings.java b/hibernate-core/src/main/java/org/hibernate/cfg/AvailableSettings.java index 587e822928..b62a7bb6ce 100644 --- a/hibernate-core/src/main/java/org/hibernate/cfg/AvailableSettings.java +++ b/hibernate-core/src/main/java/org/hibernate/cfg/AvailableSettings.java @@ -533,17 +533,6 @@ public interface AvailableSettings { */ String DEFAULT_CACHE_CONCURRENCY_STRATEGY = "hibernate.cache.default_cache_concurrency_strategy"; - /** - * Setting which indicates whether or not the new {@link org.hibernate.id.IdentifierGenerator} are used - * for AUTO, TABLE and SEQUENCE. - *

- * Default is {@code true}. Existing applications may want to disable this (set it {@code false}) for - * upgrade compatibility. - * - * @see MetadataBuilder#enableNewIdentifierGeneratorSupport - */ - String USE_NEW_ID_GENERATOR_MAPPINGS = "hibernate.id.new_generator_mappings"; - /** * @see MetadataBuilder#enableImplicitForcingOfDiscriminatorsInSelect(boolean) */ diff --git a/hibernate-core/src/main/java/org/hibernate/cfg/BinderHelper.java b/hibernate-core/src/main/java/org/hibernate/cfg/BinderHelper.java index 5932a86327..6c14c702de 100644 --- a/hibernate-core/src/main/java/org/hibernate/cfg/BinderHelper.java +++ b/hibernate-core/src/main/java/org/hibernate/cfg/BinderHelper.java @@ -36,7 +36,6 @@ import org.hibernate.cfg.annotations.Nullability; import org.hibernate.cfg.annotations.TableBinder; import org.hibernate.id.IdentifierGenerator; -import org.hibernate.id.MultipleHiLoPerTableGenerator; import org.hibernate.id.PersistentIdentifierGenerator; import org.hibernate.internal.CoreLogging; import org.hibernate.internal.CoreMessageLogger; @@ -552,10 +551,8 @@ public static void makeIdGenerator( //This is quite vague in the spec but a generator could override the generator choice String identifierGeneratorStrategy = gen.getStrategy(); //yuk! this is a hack not to override 'AUTO' even if generator is set - final boolean avoidOverriding = - identifierGeneratorStrategy.equals( "identity" ) - || identifierGeneratorStrategy.equals( "seqhilo" ) - || identifierGeneratorStrategy.equals( MultipleHiLoPerTableGenerator.class.getName() ); + final boolean avoidOverriding = identifierGeneratorStrategy.equals( "identity" ) + || identifierGeneratorStrategy.equals( "seqhilo" ); if ( generatorType == null || !avoidOverriding ) { id.setIdentifierGeneratorStrategy( identifierGeneratorStrategy ); } diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/SpannerDialectTableExporter.java b/hibernate-core/src/main/java/org/hibernate/dialect/SpannerDialectTableExporter.java index 4286a4adf4..0787b33c1e 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/SpannerDialectTableExporter.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/SpannerDialectTableExporter.java @@ -6,14 +6,6 @@ */ package org.hibernate.dialect; -import org.hibernate.boot.Metadata; -import org.hibernate.boot.model.relational.SqlStringGenerationContext; -import org.hibernate.id.enhanced.SequenceStyleGenerator; -import org.hibernate.mapping.Column; -import org.hibernate.mapping.Index; -import org.hibernate.mapping.Table; -import org.hibernate.tool.schema.spi.Exporter; - import java.text.MessageFormat; import java.util.ArrayList; import java.util.Collection; @@ -23,6 +15,13 @@ import java.util.stream.Collectors; import java.util.stream.StreamSupport; +import org.hibernate.boot.Metadata; +import org.hibernate.boot.model.relational.SqlStringGenerationContext; +import org.hibernate.mapping.Column; +import org.hibernate.mapping.Index; +import org.hibernate.mapping.Table; +import org.hibernate.tool.schema.spi.Exporter; + /** * The exporter for Cloud Spanner CREATE and DROP table statements. * @@ -94,13 +93,8 @@ private String[] getTableString(Table table, Iterable keyColumns, SqlStr context.format( table.getQualifiedTableName() ), colsAndTypes.toString(), primaryKeyColNames - ) ); - - // Hibernate requires the special hibernate_sequence table to be populated with an initial val. - if ( table.getName().equals( SequenceStyleGenerator.DEF_SEQUENCE_NAME ) ) { - statements.add( "INSERT INTO " + SequenceStyleGenerator.DEF_SEQUENCE_NAME + " (" - + SequenceStyleGenerator.DEF_VALUE_COLUMN + ") VALUES(1)" ); - } + ) + ); return statements.toArray( new String[0] ); } diff --git a/hibernate-core/src/main/java/org/hibernate/id/MultipleHiLoPerTableGenerator.java b/hibernate-core/src/main/java/org/hibernate/id/MultipleHiLoPerTableGenerator.java deleted file mode 100644 index cd609b71d0..0000000000 --- a/hibernate-core/src/main/java/org/hibernate/id/MultipleHiLoPerTableGenerator.java +++ /dev/null @@ -1,398 +0,0 @@ -/* - * Hibernate, Relational Persistence for Idiomatic Java - * - * License: GNU Lesser General Public License (LGPL), version 2.1 or later. - * See the lgpl.txt file in the root directory or . - */ -package org.hibernate.id; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Types; -import java.util.Properties; - -import org.hibernate.LockMode; -import org.hibernate.LockOptions; -import org.hibernate.MappingException; -import org.hibernate.boot.model.naming.Identifier; -import org.hibernate.boot.model.relational.Database; -import org.hibernate.boot.model.relational.Namespace; -import org.hibernate.boot.model.relational.QualifiedName; -import org.hibernate.boot.model.relational.QualifiedNameParser; -import org.hibernate.engine.jdbc.Size; -import org.hibernate.boot.model.relational.SqlStringGenerationContext; -import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment; -import org.hibernate.engine.jdbc.internal.FormatStyle; -import org.hibernate.engine.jdbc.spi.JdbcServices; -import org.hibernate.engine.jdbc.spi.SqlStatementLogger; -import org.hibernate.engine.spi.SessionEventListenerManager; -import org.hibernate.engine.spi.SharedSessionContractImplementor; -import org.hibernate.id.enhanced.AccessCallback; -import org.hibernate.id.enhanced.LegacyHiLoAlgorithmOptimizer; -import org.hibernate.id.enhanced.Optimizer; -import org.hibernate.internal.CoreLogging; -import org.hibernate.internal.CoreMessageLogger; -import org.hibernate.internal.log.DeprecationLogger; -import org.hibernate.internal.util.config.ConfigurationHelper; -import org.hibernate.jdbc.AbstractReturningWork; -import org.hibernate.jdbc.WorkExecutorVisitable; -import org.hibernate.mapping.Column; -import org.hibernate.mapping.PrimaryKey; -import org.hibernate.mapping.Table; -import org.hibernate.service.ServiceRegistry; -import org.hibernate.type.BasicTypeRegistry; -import org.hibernate.type.StandardBasicTypes; -import org.hibernate.type.Type; - -/** - * A hilo IdentifierGenerator that returns a Long, constructed using - * a hi/lo algorithm. The hi value MUST be fetched in a separate transaction - * to the Session transaction so the generator must be able to obtain - * a new connection and commit it. Hence this implementation may not - * be used when the user is supplying connections. In this - * case a SequenceHiLoGenerator would be a better choice (where - * supported).
- *
- *

- * A hilo IdentifierGenerator that uses a database - * table to store the last generated values. A table can contains - * several hi values. They are distinct from each other through a key - *

- *

This implementation is not compliant with a user connection

- *

- *

- *

Allowed parameters (all of them are optional):

- * - * - * @author Emmanuel Bernard - * @author Klaus Richarz. - * - * @deprecated Use {@link org.hibernate.id.enhanced.TableGenerator} instead. - */ -@Deprecated -public class MultipleHiLoPerTableGenerator implements PersistentIdentifierGenerator { - private static final CoreMessageLogger LOG = CoreLogging.messageLogger( MultipleHiLoPerTableGenerator.class ); - - public static final String ID_TABLE = "table"; - public static final String PK_COLUMN_NAME = "primary_key_column"; - public static final String PK_VALUE_NAME = "primary_key_value"; - public static final String VALUE_COLUMN_NAME = "value_column"; - public static final String PK_LENGTH_NAME = "primary_key_length"; - - private static final int DEFAULT_PK_LENGTH = 255; - public static final String DEFAULT_TABLE = "hibernate_sequences"; - private static final String DEFAULT_PK_COLUMN = "sequence_name"; - private static final String DEFAULT_VALUE_COLUMN = "sequence_next_hi_value"; - - private String contributor; - - private QualifiedName qualifiedTableName; - private QualifiedName physicalTableName; - private String segmentColumnName; - private String segmentName; - private String valueColumnName; - private String query; - private String insert; - private String update; - - //hilo params - public static final String MAX_LO = "max_lo"; - - private int maxLo; - private LegacyHiLoAlgorithmOptimizer hiloOptimizer; - - private Class returnClass; - private int keySize; - - @Override - public Optimizer getOptimizer() { - return hiloOptimizer; - } - - @Override - public synchronized Object generate(final SharedSessionContractImplementor session, Object obj) { - DeprecationLogger.DEPRECATION_LOGGER.deprecatedTableGenerator( getClass().getName() ); - - final SqlStatementLogger statementLogger = session.getFactory().getServiceRegistry() - .getService( JdbcServices.class ) - .getSqlStatementLogger(); - final SessionEventListenerManager statsCollector = session.getEventListenerManager(); - - final WorkExecutorVisitable work = new AbstractReturningWork() { - @Override - public IntegralDataTypeHolder execute(Connection connection) throws SQLException { - IntegralDataTypeHolder value = IdentifierGeneratorHelper.getIntegralDataTypeHolder( returnClass ); - - int rows; - do { - final PreparedStatement queryPreparedStatement = prepareStatement( - connection, - query, - statementLogger, - statsCollector - ); - try { - final ResultSet rs = executeQuery( queryPreparedStatement, statsCollector ); - boolean isInitialized = rs.next(); - if ( !isInitialized ) { - value.initialize( 0 ); - final PreparedStatement insertPreparedStatement = prepareStatement( - connection, - insert, - statementLogger, - statsCollector - ); - try { - value.bind( insertPreparedStatement, 1 ); - executeUpdate( insertPreparedStatement, statsCollector ); - } - finally { - insertPreparedStatement.close(); - } - } - else { - value.initialize( rs, 0 ); - } - rs.close(); - } - catch (SQLException sqle) { - LOG.unableToReadOrInitHiValue( sqle ); - throw sqle; - } - finally { - queryPreparedStatement.close(); - } - - - final PreparedStatement updatePreparedStatement = prepareStatement( - connection, - update, - statementLogger, - statsCollector - ); - try { - value.copy().increment().bind( updatePreparedStatement, 1 ); - value.bind( updatePreparedStatement, 2 ); - - rows = executeUpdate( updatePreparedStatement, statsCollector ); - } - catch (SQLException sqle) { - LOG.error( LOG.unableToUpdateHiValue( physicalTableName.render() ), sqle ); - throw sqle; - } - finally { - updatePreparedStatement.close(); - } - } while ( rows == 0 ); - - return value; - } - }; - - // maxLo < 1 indicates a hilo generator with no hilo :? - if ( maxLo < 1 ) { - //keep the behavior consistent even for boundary usages - IntegralDataTypeHolder value = null; - while ( value == null || value.lt( 1 ) ) { - value = session.getTransactionCoordinator().createIsolationDelegate().delegateWork( work, true ); - } - return value.makeValue(); - } - - return hiloOptimizer.generate( - new AccessCallback() { - public IntegralDataTypeHolder getNextValue() { - return session.getTransactionCoordinator().createIsolationDelegate().delegateWork( - work, - true - ); - } - - @Override - public String getTenantIdentifier() { - return session.getTenantIdentifier(); - } - } - ); - } - - private PreparedStatement prepareStatement( - Connection connection, - String sql, - SqlStatementLogger statementLogger, - SessionEventListenerManager statsCollector) throws SQLException { - statementLogger.logStatement( sql, FormatStyle.BASIC.getFormatter() ); - try { - statsCollector.jdbcPrepareStatementStart(); - return connection.prepareStatement( sql ); - } - finally { - statsCollector.jdbcPrepareStatementEnd(); - } - } - - private int executeUpdate(PreparedStatement ps, SessionEventListenerManager statsCollector) throws SQLException { - try { - statsCollector.jdbcExecuteStatementStart(); - return ps.executeUpdate(); - } - finally { - statsCollector.jdbcExecuteStatementEnd(); - } - - } - - private ResultSet executeQuery(PreparedStatement ps, SessionEventListenerManager statsCollector) - throws SQLException { - try { - statsCollector.jdbcExecuteStatementStart(); - return ps.executeQuery(); - } - finally { - statsCollector.jdbcExecuteStatementEnd(); - } - } - - @Override - @SuppressWarnings({"StatementWithEmptyBody", "deprecation"}) - public void configure(Type type, Properties params, ServiceRegistry serviceRegistry) throws MappingException { - returnClass = type.getReturnedClass(); - - final JdbcEnvironment jdbcEnvironment = serviceRegistry.getService( JdbcEnvironment.class ); - - qualifiedTableName = determineGeneratorTableName( params, jdbcEnvironment ); - - segmentColumnName = determineSegmentColumnName( params, jdbcEnvironment ); - keySize = ConfigurationHelper.getInt( PK_LENGTH_NAME, params, DEFAULT_PK_LENGTH ); - segmentName = ConfigurationHelper.getString( PK_VALUE_NAME, params, params.getProperty( TABLE ) ); - - valueColumnName = determineValueColumnName( params, jdbcEnvironment ); - - //hilo config - maxLo = ConfigurationHelper.getInt( MAX_LO, params, Short.MAX_VALUE ); - - if ( maxLo >= 1 ) { - hiloOptimizer = new LegacyHiLoAlgorithmOptimizer( returnClass, maxLo ); - } - - contributor = params.getProperty( CONTRIBUTOR_NAME ); - if ( contributor == null ) { - contributor = "orm"; - } - } - - protected QualifiedName determineGeneratorTableName(Properties params, JdbcEnvironment jdbcEnvironment) { - final String tableName = ConfigurationHelper.getString( ID_TABLE, params, DEFAULT_TABLE ); - - if ( tableName.contains( "." ) ) { - return QualifiedNameParser.INSTANCE.parse( tableName ); - } - else { - // todo : need to incorporate implicit catalog and schema names - final Identifier catalog = jdbcEnvironment.getIdentifierHelper().toIdentifier( - ConfigurationHelper.getString( CATALOG, params ) - ); - final Identifier schema = jdbcEnvironment.getIdentifierHelper().toIdentifier( - ConfigurationHelper.getString( SCHEMA, params ) - ); - return new QualifiedNameParser.NameParts( - catalog, - schema, - jdbcEnvironment.getIdentifierHelper().toIdentifier( tableName ) - ); - } - } - - protected String determineSegmentColumnName(Properties params, JdbcEnvironment jdbcEnvironment) { - final String name = ConfigurationHelper.getString( PK_COLUMN_NAME, params, DEFAULT_PK_COLUMN ); - return jdbcEnvironment.getIdentifierHelper().toIdentifier( name ).render( jdbcEnvironment.getDialect() ); - } - - protected String determineValueColumnName(Properties params, JdbcEnvironment jdbcEnvironment) { - final String name = ConfigurationHelper.getString( VALUE_COLUMN_NAME, params, DEFAULT_VALUE_COLUMN ); - return jdbcEnvironment.getIdentifierHelper().toIdentifier( name ).render( jdbcEnvironment.getDialect() ); - } - - @Override - public void registerExportables(Database database) { - final Namespace namespace = database.locateNamespace( - qualifiedTableName.getCatalogName(), - qualifiedTableName.getSchemaName() - ); - - Table table = namespace.locateTable( qualifiedTableName.getObjectName() ); - if ( table == null ) { - table = namespace.createTable( - qualifiedTableName.getObjectName(), - (identifier) -> new Table( contributor, namespace, identifier, false ) - ); - - // todo : not sure the best solution here. do we add the columns if missing? other? - table.setPrimaryKey( new PrimaryKey( table ) ); - - final BasicTypeRegistry basicTypeRegistry = database.getTypeConfiguration().getBasicTypeRegistry(); - final Column pkColumn = new ExportableColumn( - database, - table, - segmentColumnName, - basicTypeRegistry.resolve( StandardBasicTypes.STRING ), - database.getDialect().getTypeName( Types.VARCHAR, Size.length(keySize) ) - ); - pkColumn.setNullable( false ); - table.addColumn( pkColumn ); - table.getPrimaryKey().addColumn( pkColumn ); - - final Column valueColumn = new ExportableColumn( - database, - table, - valueColumnName, - basicTypeRegistry.resolve( StandardBasicTypes.LONG ) - ); - table.addColumn( valueColumn ); - } - - // allow physical naming strategies a chance to kick in - physicalTableName = table.getQualifiedTableName(); - } - - @Override - public void initialize(SqlStringGenerationContext context) { - String formattedPhysicalTableName = context.format( physicalTableName ); - - query = "select " + - valueColumnName + - " from " + - context.getDialect().appendLockHint( new LockOptions( LockMode.PESSIMISTIC_WRITE ), formattedPhysicalTableName ) + - " where " + segmentColumnName + " = '" + segmentName + "'" + - context.getDialect().getForUpdateString(); - - update = "update " + - formattedPhysicalTableName + - " set " + - valueColumnName + - " = ? where " + - valueColumnName + - " = ? and " + - segmentColumnName + - " = '" + - segmentName - + "'"; - - insert = "insert into " + formattedPhysicalTableName + - "(" + segmentColumnName + ", " + valueColumnName + ") " + - "values('" + segmentName + "', ?)"; - - - - } - -} diff --git a/hibernate-core/src/main/java/org/hibernate/id/SequenceGenerator.java b/hibernate-core/src/main/java/org/hibernate/id/SequenceGenerator.java deleted file mode 100644 index cbbc1deb5b..0000000000 --- a/hibernate-core/src/main/java/org/hibernate/id/SequenceGenerator.java +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Hibernate, Relational Persistence for Idiomatic Java - * - * License: GNU Lesser General Public License (LGPL), version 2.1 or later. - * See the lgpl.txt file in the root directory or . - */ -package org.hibernate.id; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.Properties; - -import org.hibernate.MappingException; -import org.hibernate.boot.model.naming.ObjectNameNormalizer; -import org.hibernate.boot.model.relational.Database; -import org.hibernate.boot.model.relational.Namespace; -import org.hibernate.boot.model.relational.QualifiedName; -import org.hibernate.boot.model.relational.QualifiedNameParser; -import org.hibernate.boot.model.relational.Sequence; -import org.hibernate.boot.model.relational.SqlStringGenerationContext; -import org.hibernate.engine.jdbc.spi.JdbcCoordinator; -import org.hibernate.engine.spi.SharedSessionContractImplementor; -import org.hibernate.id.enhanced.Optimizer; -import org.hibernate.internal.log.DeprecationLogger; -import org.hibernate.internal.util.config.ConfigurationHelper; -import org.hibernate.resource.jdbc.spi.LogicalConnectionImplementor; -import org.hibernate.service.ServiceRegistry; -import org.hibernate.type.Type; - -import org.jboss.logging.Logger; - -/** - * sequence
- *
- * Generates long values using an oracle-style sequence. A higher - * performance algorithm is SequenceHiLoGenerator.
- *
- * Mapping parameters supported: sequence, parameters. - * - * @see SequenceHiLoGenerator - * @author Gavin King - * - * @deprecated Use {@link org.hibernate.id.enhanced.SequenceStyleGenerator} instead - */ -@Deprecated -public class SequenceGenerator - implements PersistentIdentifierGenerator, BulkInsertionCapableIdentifierGenerator { - - private static final Logger LOG = Logger.getLogger( SequenceGenerator.class.getName() ); - - /** - * The sequence parameter - */ - public static final String SEQUENCE = "sequence"; - - /** - * The parameters parameter, appended to the create sequence DDL. - * For example (Oracle): INCREMENT BY 1 START WITH 1 MAXVALUE 100 NOCACHE. - * - * @deprecated No longer supported. To specify initial-value or increment use the - * org.hibernate.id.enhanced.SequenceStyleGenerator generator instead. - */ - @Deprecated - public static final String PARAMETERS = "parameters"; - - private String contributor; - - private QualifiedName logicalQualifiedSequenceName; - private QualifiedName physicalSequenceName; - private Type identifierType; - private String sql; - - protected Type getIdentifierType() { - return identifierType; - } - - public QualifiedName getPhysicalSequenceName() { - return physicalSequenceName; - } - - /** - * @deprecated Exposed for tests only. - */ - @Deprecated - public String[] getAllSqlForTests() { - return new String[] { sql }; - } - - @Override - public Optimizer getOptimizer() { - return null; - } - - @Override - public void configure(Type type, Properties params, ServiceRegistry serviceRegistry) throws MappingException { - DeprecationLogger.DEPRECATION_LOGGER.deprecatedSequenceGenerator( getClass().getName() ); - - identifierType = type; - - final ObjectNameNormalizer normalizer = (ObjectNameNormalizer) params.get( IDENTIFIER_NORMALIZER ); - logicalQualifiedSequenceName = QualifiedNameParser.INSTANCE.parse( - ConfigurationHelper.getString( SEQUENCE, params, "hibernate_sequence" ), - normalizer.normalizeIdentifierQuoting( params.getProperty( CATALOG ) ), - normalizer.normalizeIdentifierQuoting( params.getProperty( SCHEMA ) ) - ); - - if ( params.containsKey( PARAMETERS ) ) { - LOG.warn( - "Use of 'parameters' config setting is no longer supported; " + - "to specify initial-value or increment use the " + - "org.hibernate.id.enhanced.SequenceStyleGenerator generator instead." - ); - } - - contributor = determineContributor( params ); - } - - private String determineContributor(Properties params) { - final String contributor = params.getProperty( CONTRIBUTOR_NAME ); - return contributor == null ? "orm" : contributor; - } - - @Override - public Object generate(SharedSessionContractImplementor session, Object obj) { - return generateHolder( session ).makeValue(); - } - - protected IntegralDataTypeHolder generateHolder(SharedSessionContractImplementor session) { - try { - final JdbcCoordinator jdbcCoordinator = session.getJdbcCoordinator(); - PreparedStatement st = jdbcCoordinator.getStatementPreparer().prepareStatement( sql ); - final LogicalConnectionImplementor logicalConnection = jdbcCoordinator.getLogicalConnection(); - try { - ResultSet rs = jdbcCoordinator.getResultSetReturn().extract( st ); - try { - rs.next(); - IntegralDataTypeHolder result = buildHolder(); - result.initialize( rs, 1 ); - LOG.debugf( "Sequence identifier generated: %s", result ); - return result; - } - finally { - logicalConnection.getResourceRegistry().release( rs, st ); - } - } - finally { - logicalConnection.getResourceRegistry().release( st ); - jdbcCoordinator.afterStatementExecution(); - } - - } - catch (SQLException sqle) { - throw session.getJdbcServices().getSqlExceptionHelper().convert( - sqle, - "could not get next sequence value", - sql - ); - } - } - - protected IntegralDataTypeHolder buildHolder() { - return IdentifierGeneratorHelper.getIntegralDataTypeHolder( identifierType.getReturnedClass() ); - } - - @Override - public boolean supportsBulkInsertionIdentifierGeneration() { - return true; - } - - @Override - public String determineBulkInsertionIdentifierGenerationSelectFragment(SqlStringGenerationContext context) { - return context.getDialect().getSequenceSupport().getSelectSequenceNextValString( context.format( getPhysicalSequenceName() ) ); - } - - @Override - public void registerExportables(Database database) { - final Namespace namespace = database.locateNamespace( - logicalQualifiedSequenceName.getCatalogName(), - logicalQualifiedSequenceName.getSchemaName() - ); - Sequence sequence = namespace.locateSequence( logicalQualifiedSequenceName.getObjectName() ); - if ( sequence != null ) { - sequence.validate( 1, 1 ); - } - else { - sequence = namespace.createSequence( - logicalQualifiedSequenceName.getObjectName(), - (physicalName) -> new Sequence( - contributor, - namespace.getPhysicalName().getCatalog(), - namespace.getPhysicalName().getSchema(), - physicalName, - 1, - 1 - ) - ); - } - this.physicalSequenceName = sequence.getName(); - } - - @Override - public void initialize(SqlStringGenerationContext context) { - String formattedPhysicalSequenceName = context.format( physicalSequenceName ); - this.sql = context.getDialect().getSequenceSupport().getSequenceNextValString( formattedPhysicalSequenceName ); - } -} diff --git a/hibernate-core/src/main/java/org/hibernate/id/SequenceHiLoGenerator.java b/hibernate-core/src/main/java/org/hibernate/id/SequenceHiLoGenerator.java deleted file mode 100644 index 838d8b78f4..0000000000 --- a/hibernate-core/src/main/java/org/hibernate/id/SequenceHiLoGenerator.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Hibernate, Relational Persistence for Idiomatic Java - * - * License: GNU Lesser General Public License (LGPL), version 2.1 or later. - * See the lgpl.txt file in the root directory or . - */ -package org.hibernate.id; - -import java.util.Properties; - -import org.hibernate.MappingException; -import org.hibernate.engine.spi.SharedSessionContractImplementor; -import org.hibernate.id.enhanced.AccessCallback; -import org.hibernate.id.enhanced.LegacyHiLoAlgorithmOptimizer; -import org.hibernate.id.enhanced.Optimizer; -import org.hibernate.internal.util.config.ConfigurationHelper; -import org.hibernate.service.ServiceRegistry; -import org.hibernate.type.Type; - -/** - * seqhilo
- *
- * An IdentifierGenerator that combines a hi/lo algorithm with an underlying - * oracle-style sequence that generates hi values. The user may specify a - * maximum lo value to determine how often new hi values are fetched.
- *
- * Mapping parameters supported: sequence, max_lo, parameters. - * - * @author Gavin King - * - * @deprecated See deprecation discussion on {@link SequenceGenerator} - */ -@Deprecated -public class SequenceHiLoGenerator extends SequenceGenerator { - public static final String MAX_LO = "max_lo"; - - private int maxLo; - - private LegacyHiLoAlgorithmOptimizer hiloOptimizer; - - @Override - public Optimizer getOptimizer() { - return hiloOptimizer; - } - - @Override - public void configure(Type type, Properties params, ServiceRegistry serviceRegistry) throws MappingException { - super.configure( type, params, serviceRegistry ); - - maxLo = ConfigurationHelper.getInt( MAX_LO, params, 9 ); - - if ( maxLo >= 1 ) { - hiloOptimizer = new LegacyHiLoAlgorithmOptimizer( - getIdentifierType().getReturnedClass(), - maxLo - ); - } - } - - @Override - public synchronized Object generate(final SharedSessionContractImplementor session, Object obj) { - // maxLo < 1 indicates a hilo generator with no hilo :? - if ( maxLo < 1 ) { - //keep the behavior consistent even for boundary usages - IntegralDataTypeHolder value = null; - while ( value == null || value.lt( 0 ) ) { - value = super.generateHolder( session ); - } - return value.makeValue(); - } - - return hiloOptimizer.generate( - new AccessCallback() { - @Override - public IntegralDataTypeHolder getNextValue() { - return generateHolder( session ); - } - - @Override - public String getTenantIdentifier() { - return session.getTenantIdentifier(); - } - } - ); - } - - /** - * For testing/assertion purposes - * - * @return The optimizer - */ - LegacyHiLoAlgorithmOptimizer getHiloOptimizer() { - return hiloOptimizer; - } -} diff --git a/hibernate-core/src/main/java/org/hibernate/id/SequenceIdentityGenerator.java b/hibernate-core/src/main/java/org/hibernate/id/SequenceIdentityGenerator.java deleted file mode 100644 index ce838707b0..0000000000 --- a/hibernate-core/src/main/java/org/hibernate/id/SequenceIdentityGenerator.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Hibernate, Relational Persistence for Idiomatic Java - * - * License: GNU Lesser General Public License (LGPL), version 2.1 or later. - * See the lgpl.txt file in the root directory or . - */ -package org.hibernate.id; - -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.util.Properties; - -import org.hibernate.HibernateException; -import org.hibernate.MappingException; -import org.hibernate.boot.model.relational.QualifiedName; -import org.hibernate.boot.model.relational.SqlStringGenerationContext; -import org.hibernate.dialect.Dialect; -import org.hibernate.engine.spi.SharedSessionContractImplementor; -import org.hibernate.id.insert.AbstractReturningDelegate; -import org.hibernate.id.insert.IdentifierGeneratingInsert; -import org.hibernate.id.insert.InsertGeneratedIdentifierDelegate; -import org.hibernate.internal.CoreLogging; -import org.hibernate.internal.CoreMessageLogger; -import org.hibernate.service.ServiceRegistry; -import org.hibernate.sql.Insert; -import org.hibernate.type.Type; - -/** - * A generator which combines sequence generation with immediate retrieval - * through JDBC3 {@link java.sql.Connection#prepareStatement(String, String[]) getGeneratedKeys}. - * In this respect it works much like ANSI-SQL IDENTITY generation. - *

- * This generator only known to work with newer Oracle drivers compiled for - * JDK 1.4 (JDBC3). - *

- * Note: Due to a bug in Oracle drivers, sql comments on these insert statements - * are completely disabled. - * - * @author Steve Ebersole - * @deprecated See deprecation discussion on {@link SequenceGenerator} - */ -@Deprecated -public class SequenceIdentityGenerator - extends SequenceGenerator - implements PostInsertIdentifierGenerator { - - private static final CoreMessageLogger LOG = CoreLogging.messageLogger( SequenceIdentityGenerator.class ); - - @Override - public Object generate(SharedSessionContractImplementor s, Object obj) { - return IdentifierGeneratorHelper.POST_INSERT_INDICATOR; - } - - @Override - public InsertGeneratedIdentifierDelegate getInsertGeneratedIdentifierDelegate( - PostInsertIdentityPersister persister, - Dialect dialect, - boolean isGetGeneratedKeysEnabled) throws HibernateException { - return new Delegate( persister, getPhysicalSequenceName() ); - } - - @Override - public void configure(Type type, Properties params, ServiceRegistry serviceRegistry) throws MappingException { - super.configure( type, params, serviceRegistry ); - } - - public static class Delegate extends AbstractReturningDelegate { - private final QualifiedName physicalSequenceName; - private final String[] keyColumns; - - public Delegate(PostInsertIdentityPersister persister, QualifiedName physicalSequenceName) { - super( persister ); - this.physicalSequenceName = physicalSequenceName; - this.keyColumns = getPersister().getRootTableKeyColumnNames(); - if ( keyColumns.length > 1 ) { - throw new HibernateException( "sequence-identity generator cannot be used with multi-column keys" ); - } - } - - @Override - public IdentifierGeneratingInsert prepareIdentifierGeneratingInsert(SqlStringGenerationContext context) { - Dialect dialect = context.getDialect(); - NoCommentsInsert insert = new NoCommentsInsert( dialect ); - String sequenceNextValFragment = dialect.getSequenceSupport().getSelectSequenceNextValString( context.format( physicalSequenceName ) ); - insert.addColumn( getPersister().getRootTableKeyColumnNames()[0], sequenceNextValFragment ); - return insert; - } - - @Override - protected PreparedStatement prepare(String insertSQL, SharedSessionContractImplementor session) throws SQLException { - return session.getJdbcCoordinator().getStatementPreparer().prepareStatement( insertSQL, keyColumns ); - } - - @Override - protected Object executeAndExtract(PreparedStatement insert, SharedSessionContractImplementor session) - throws SQLException { - session.getJdbcCoordinator().getResultSetReturn().executeUpdate( insert ); - return IdentifierGeneratorHelper.getGeneratedIdentity( - insert.getGeneratedKeys(), - getPersister().getRootTableKeyColumnNames()[0], - getPersister().getIdentifierType(), - session.getJdbcServices().getJdbcEnvironment().getDialect() - ); - } - } - - public static class NoCommentsInsert extends IdentifierGeneratingInsert { - public NoCommentsInsert(Dialect dialect) { - super( dialect ); - } - - @Override - public Insert setComment(String comment) { - // don't allow comments on these insert statements as comments totally - // blow up the Oracle getGeneratedKeys "support" :( - LOG.disallowingInsertStatementComment(); - return this; - } - } -} diff --git a/hibernate-core/src/main/java/org/hibernate/id/UUIDGenerator.java b/hibernate-core/src/main/java/org/hibernate/id/UUIDGenerator.java index 22551f2c94..0fd0c3443d 100644 --- a/hibernate-core/src/main/java/org/hibernate/id/UUIDGenerator.java +++ b/hibernate-core/src/main/java/org/hibernate/id/UUIDGenerator.java @@ -39,27 +39,21 @@ * @author Steve Ebersole */ public class UUIDGenerator implements IdentifierGenerator { + private static final CoreMessageLogger LOG = CoreLogging.messageLogger( UUIDGenerator.class ); + public static final String UUID_GEN_STRATEGY = "uuid_gen_strategy"; public static final String UUID_GEN_STRATEGY_CLASS = "uuid_gen_strategy_class"; - private static final CoreMessageLogger LOG = CoreLogging.messageLogger( UUIDGenerator.class ); - private UUIDGenerationStrategy strategy; private UUIDJavaTypeDescriptor.ValueTransformer valueTransformer; - public static UUIDGenerator buildSessionFactoryUniqueIdentifierGenerator() { - final UUIDGenerator generator = new UUIDGenerator(); - generator.strategy = StandardRandomStrategy.INSTANCE; - generator.valueTransformer = UUIDJavaTypeDescriptor.ToStringTransformer.INSTANCE; - return generator; - } - @Override public void configure(Type type, Properties params, ServiceRegistry serviceRegistry) throws MappingException { - // check first for the strategy instance + // check first for an explicit strategy instance strategy = (UUIDGenerationStrategy) params.get( UUID_GEN_STRATEGY ); + if ( strategy == null ) { - // next check for the strategy class + // next check for an explicit strategy class final String strategyClassName = params.getProperty( UUID_GEN_STRATEGY_CLASS ); if ( strategyClassName != null ) { try { @@ -77,6 +71,7 @@ public void configure(Type type, Properties params, ServiceRegistry serviceRegis } } } + if ( strategy == null ) { // lastly use the standard random generator strategy = StandardRandomStrategy.INSTANCE; @@ -86,6 +81,7 @@ public void configure(Type type, Properties params, ServiceRegistry serviceRegis valueTransformer = UUIDJavaTypeDescriptor.PassThroughTransformer.INSTANCE; } else if ( String.class.isAssignableFrom( type.getReturnedClass() ) ) { + // todo (6.0) : allow for org.hibernate.type.descriptor.java.UUIDJavaTypeDescriptor.NoDashesStringTransformer valueTransformer = UUIDJavaTypeDescriptor.ToStringTransformer.INSTANCE; } else if ( byte[].class.isAssignableFrom( type.getReturnedClass() ) ) { diff --git a/hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceStyleGenerator.java b/hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceStyleGenerator.java index 55650c25bd..1a1174b25f 100644 --- a/hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceStyleGenerator.java +++ b/hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceStyleGenerator.java @@ -49,7 +49,7 @@ * * * {@link #SEQUENCE_PARAM} - * {@link #DEF_SEQUENCE_NAME} + * N/A * The name of the sequence/table to use to store/retrieve values * * @@ -107,13 +107,7 @@ public class SequenceStyleGenerator * based on the entity / collection-role name */ public static final String SEQUENCE_PARAM = "sequence_name"; - - /** - * @deprecated As of 6.0 with no replacement - `hibernate_sequence` as a real, implicit exportable name - * is no longer supported. No effect - */ - @Deprecated - public static final String DEF_SEQUENCE_NAME = "hibernate_sequence"; + public static final String ALT_SEQUENCE_PARAM = "sequence"; /** * Specifies the suffix to use for an implicit sequence name - appended to the entity-name / collection-role @@ -295,7 +289,12 @@ protected QualifiedName determineSequenceName( ConfigurationHelper.getString( SCHEMA, params ) ); - final String sequenceName = ConfigurationHelper.getString( SEQUENCE_PARAM, params ); + final String sequenceName = ConfigurationHelper.getString( + SEQUENCE_PARAM, + params, + () -> ConfigurationHelper.getString( ALT_SEQUENCE_PARAM, params ) + ); + if ( StringHelper.isNotEmpty( sequenceName ) ) { // we have an explicit name, use it if ( sequenceName.contains( "." ) ) { diff --git a/hibernate-core/src/main/java/org/hibernate/id/enhanced/TableGenerator.java b/hibernate-core/src/main/java/org/hibernate/id/enhanced/TableGenerator.java index 8636c6c499..ae8e69309b 100644 --- a/hibernate-core/src/main/java/org/hibernate/id/enhanced/TableGenerator.java +++ b/hibernate-core/src/main/java/org/hibernate/id/enhanced/TableGenerator.java @@ -65,13 +65,6 @@ * performing generation, which would mean that we would have a row in the generator * table for each entity name. Or any configuration really; the setup is very flexible. *

- * In this respect it is very similar to the legacy - * {@link org.hibernate.id.MultipleHiLoPerTableGenerator} in terms of the - * underlying storage structure (namely a single table capable of holding - * multiple generator values). The differentiator is, as with - * {@link SequenceStyleGenerator} as well, the externalized notion - * of an optimizer. - *

* NOTE that by default we use a single row for all generators (based * on {@link #DEF_SEGMENT_VALUE}). The configuration parameter * {@link #CONFIG_PREFER_SEGMENT_PER_ENTITY} can be used to change that to diff --git a/hibernate-core/src/main/java/org/hibernate/id/factory/internal/DefaultIdentifierGeneratorFactory.java b/hibernate-core/src/main/java/org/hibernate/id/factory/internal/DefaultIdentifierGeneratorFactory.java index 5e8be4f2a2..462afb5682 100644 --- a/hibernate-core/src/main/java/org/hibernate/id/factory/internal/DefaultIdentifierGeneratorFactory.java +++ b/hibernate-core/src/main/java/org/hibernate/id/factory/internal/DefaultIdentifierGeneratorFactory.java @@ -13,10 +13,8 @@ import org.hibernate.MappingException; import org.hibernate.boot.registry.classloading.spi.ClassLoaderService; import org.hibernate.boot.registry.classloading.spi.ClassLoadingException; -import org.hibernate.cfg.AvailableSettings; import org.hibernate.dialect.Dialect; import org.hibernate.engine.config.spi.ConfigurationService; -import org.hibernate.engine.config.spi.StandardConverters; import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment; import org.hibernate.id.Assigned; import org.hibernate.id.ForeignGenerator; @@ -25,9 +23,6 @@ import org.hibernate.id.IdentityGenerator; import org.hibernate.id.IncrementGenerator; import org.hibernate.id.SelectGenerator; -import org.hibernate.id.SequenceGenerator; -import org.hibernate.id.SequenceHiLoGenerator; -import org.hibernate.id.SequenceIdentityGenerator; import org.hibernate.id.UUIDGenerator; import org.hibernate.id.UUIDHexGenerator; import org.hibernate.id.enhanced.SequenceStyleGenerator; @@ -36,6 +31,7 @@ import org.hibernate.internal.CoreLogging; import org.hibernate.internal.CoreMessageLogger; import org.hibernate.resource.beans.container.spi.BeanContainer; +import org.hibernate.resource.beans.container.spi.ContainedBean; import org.hibernate.resource.beans.internal.FallbackBeanInstanceProducer; import org.hibernate.resource.beans.spi.ManagedBeanRegistry; import org.hibernate.service.ServiceRegistry; @@ -50,7 +46,7 @@ */ @SuppressWarnings( { "deprecation" ,"rawtypes" ,"serial" } ) public class DefaultIdentifierGeneratorFactory - implements MutableIdentifierGeneratorFactory, Serializable, ServiceRegistryAwareService { + implements MutableIdentifierGeneratorFactory, Serializable, ServiceRegistryAwareService, BeanContainer.LifecycleOptions { private static final CoreMessageLogger LOG = CoreLogging.messageLogger( DefaultIdentifierGeneratorFactory.class ); @@ -78,18 +74,18 @@ public DefaultIdentifierGeneratorFactory() { */ public DefaultIdentifierGeneratorFactory(boolean ignoreBeanContainer) { this.ignoreBeanContainer = ignoreBeanContainer; + register( "uuid", UUIDHexGenerator.class ); register( "uuid2", UUIDGenerator.class ); - register( "guid", GUIDGenerator.class ); // can be done with UUIDGenerator + strategy - register( "uuid", UUIDHexGenerator.class ); // "deprecated" for new use - register( "uuid.hex", UUIDHexGenerator.class ); // uuid.hex is deprecated + register( "uuid.hex", UUIDHexGenerator.class ); + // could be done with UUIDGenerator + strategy + register( "guid", GUIDGenerator.class ); + register( "assigned", Assigned.class ); register( "identity", IdentityGenerator.class ); register( "select", SelectGenerator.class ); register( "sequence", SequenceStyleGenerator.class ); - register( "seqhilo", SequenceHiLoGenerator.class ); register( "increment", IncrementGenerator.class ); register( "foreign", ForeignGenerator.class ); - register( "sequence-identity", SequenceIdentityGenerator.class ); register( "enhanced-sequence", SequenceStyleGenerator.class ); register( "enhanced-table", TableGenerator.class ); } @@ -121,23 +117,12 @@ public IdentifierGenerator createIdentifierGenerator(String strategy, Type type, identifierGenerator = ( IdentifierGenerator ) clazz.newInstance(); } else { - identifierGenerator = ( IdentifierGenerator ) beanContainer.getBean( + final ContainedBean generatorBean = beanContainer.getBean( clazz, - new BeanContainer.LifecycleOptions() { - - @Override - public boolean canUseCachedReferences() { - return false; - } - - @Override - public boolean useJpaCompliantCreation() { - return true; - } - - }, + this, FallbackBeanInstanceProducer.INSTANCE - ).getBeanInstance(); + ); + identifierGenerator = generatorBean.getBeanInstance(); } identifierGenerator.configure( type, config, serviceRegistry ); return identifierGenerator; @@ -148,6 +133,16 @@ public boolean useJpaCompliantCreation() { } } + @Override + public boolean canUseCachedReferences() { + return false; + } + + @Override + public boolean useJpaCompliantCreation() { + return true; + } + @Override public Class getIdentifierGeneratorClass(String strategy) { if ( "hilo".equals( strategy ) ) { @@ -178,15 +173,5 @@ public void injectServices(ServiceRegistryImplementor serviceRegistry) { this.beanContainer = serviceRegistry.getService( ManagedBeanRegistry.class ).getBeanContainer(); //else we just have beanContainer = null; } - - final boolean useNewIdentifierGenerators = configService.getSetting( - AvailableSettings.USE_NEW_ID_GENERATOR_MAPPINGS, - StandardConverters.BOOLEAN, - true - ); - - if ( ! useNewIdentifierGenerators ) { - register( "sequence", SequenceGenerator.class ); - } } } diff --git a/hibernate-core/src/main/java/org/hibernate/internal/util/config/ConfigurationHelper.java b/hibernate-core/src/main/java/org/hibernate/internal/util/config/ConfigurationHelper.java index fffe566595..a0af1ddaa5 100644 --- a/hibernate-core/src/main/java/org/hibernate/internal/util/config/ConfigurationHelper.java +++ b/hibernate-core/src/main/java/org/hibernate/internal/util/config/ConfigurationHelper.java @@ -63,8 +63,24 @@ public static String getString(String name, Map values) { * @return The value. */ public static String getString(String name, Map values, String defaultValue) { - final String value = getString( name, values ); - return value == null ? defaultValue : value; + return getString( name, values, () -> defaultValue ); + } + + /** + * Get the config value as a {@link String} + * + * @param name The config setting name. + * @param values The map of config values + * + * @return The value, or null if not found + */ + public static String getString(String name, Map values, Supplier defaultValueSupplier) { + final Object value = values.get( name ); + if ( value != null ) { + return value.toString(); + } + + return defaultValueSupplier.get(); } /** diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/JpaStaticMetaModelPopulationSetting.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/JpaStaticMetaModelPopulationSetting.java index d44b0e41e5..6d93d3a080 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/JpaStaticMetaModelPopulationSetting.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/JpaStaticMetaModelPopulationSetting.java @@ -53,8 +53,7 @@ public static JpaStaticMetaModelPopulationSetting determineJpaMetaModelPopulatio private static String determineSetting(Map configurationValues) { final String setting = ConfigurationHelper.getString( AvailableSettings.STATIC_METAMODEL_POPULATION, - configurationValues, - null + configurationValues ); if ( setting != null ) { return setting; diff --git a/hibernate-core/src/main/java/org/hibernate/query/internal/NamedQueryHelper.java b/hibernate-core/src/main/java/org/hibernate/query/internal/NamedQueryHelper.java index d96eb7fe21..4d7bc4248a 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/internal/NamedQueryHelper.java +++ b/hibernate-core/src/main/java/org/hibernate/query/internal/NamedQueryHelper.java @@ -150,7 +150,7 @@ private static boolean isCacheable(Map hints, SessionFactoryImpl private static String determineCacheRegion(Map hints, SessionFactoryImplementor sessionFactory) { assert sessionFactory.getSessionFactoryOptions().isQueryCacheEnabled(); - return ConfigurationHelper.getString( QueryHints.HINT_CACHE_REGION, hints, null ); + return ConfigurationHelper.getString( QueryHints.HINT_CACHE_REGION, hints ); } private static CacheMode determineCacheMode(Map hints, SessionFactoryImplementor sessionFactory) { diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/UUIDJavaTypeDescriptor.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/UUIDJavaTypeDescriptor.java index 7980859984..066c324052 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/UUIDJavaTypeDescriptor.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/UUIDJavaTypeDescriptor.java @@ -114,6 +114,33 @@ public UUID parse(Object value) { } } + public static class NoDashesStringTransformer implements ValueTransformer { + public static final NoDashesStringTransformer INSTANCE = new NoDashesStringTransformer(); + + public String transform(UUID uuid) { + final String stringForm = ToStringTransformer.INSTANCE.transform( uuid ); + return stringForm.substring( 0, 8 ) + + stringForm.substring( 9, 13 ) + + stringForm.substring( 14, 18 ) + + stringForm.substring( 19, 23 ) + + stringForm.substring( 24 ); + } + + public UUID parse(Object value) { + final String stringValue = (String) value; + final String uuidString = stringValue.substring( 0, 8 ) + + "-" + + stringValue.substring( 8, 12 ) + + "-" + + stringValue.substring( 12, 16 ) + + "-" + + stringValue.substring( 16, 20 ) + + "-" + + stringValue.substring( 20 ); + return UUID.fromString( uuidString ); + } + } + public static class ToBytesTransformer implements ValueTransformer { public static final ToBytesTransformer INSTANCE = new ToBytesTransformer(); diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/annotations/lob/Document.java b/hibernate-core/src/test/java/org/hibernate/orm/test/annotations/lob/Document.java index 50fbcff844..dac6847d5b 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/annotations/lob/Document.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/annotations/lob/Document.java @@ -20,7 +20,7 @@ @Entity public class Document implements Serializable { @Id - @GeneratedValue(strategy = GenerationType.AUTO) // Required to use SequenceIdentityGenerator in test case for HHH-8103. + @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private Integer revision; diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/annotations/lob/LobWithSequenceIdentityGeneratorTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/annotations/lob/LobWithSequenceIdentityGeneratorTest.java deleted file mode 100644 index ba75536b4a..0000000000 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/annotations/lob/LobWithSequenceIdentityGeneratorTest.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Hibernate, Relational Persistence for Idiomatic Java - * - * License: GNU Lesser General Public License (LGPL), version 2.1 or later. - * See the lgpl.txt file in the root directory or . - */ -package org.hibernate.orm.test.annotations.lob; - -import org.hibernate.Session; -import org.hibernate.cfg.Configuration; -import org.hibernate.cfg.Environment; -import org.hibernate.dialect.OracleDialect; - -import org.hibernate.testing.RequiresDialect; -import org.hibernate.testing.TestForIssue; -import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase; -import org.junit.Assert; -import org.junit.Test; - -/** - * @author Lukasz Antoniak (lukasz dot antoniak at gmail dot com) - */ -@TestForIssue( jiraKey = "HHH-8103" ) -@RequiresDialect( OracleDialect.class ) -public class LobWithSequenceIdentityGeneratorTest extends BaseCoreFunctionalTestCase { - @Override - protected void configure(Configuration configuration) { - configuration.setProperty( Environment.DIALECT, OracleSeqIdGenDialect.class.getName() ); - configuration.setProperty( Environment.USE_NEW_ID_GENERATOR_MAPPINGS, "false" ); - configuration.setProperty( Environment.USE_GET_GENERATED_KEYS, "true" ); - } - - @Override - protected Class[] getAnnotatedClasses() { - return new Class[] { Document.class }; - } - - @Test - public void testLobInsertUpdateDeleteSelect() { - Session session = openSession(); - - // Insert - session.getTransaction().begin(); - Document document = new Document( 1, "HHH-8103", "Oracle expects all LOB properties to be last in INSERT and UPDATE statements." ); - session.persist( document ); - session.getTransaction().commit(); - - session.clear(); - - session.getTransaction().begin(); - Assert.assertEquals( document, session.get( Document.class, document.getId() ) ); - session.getTransaction().commit(); - - session.clear(); - - // Update - session.getTransaction().begin(); - document = (Document) session.get( Document.class, document.getId() ); - document.setFullText( "Correct!" ); - session.update( document ); - session.getTransaction().commit(); - - session.clear(); - - session.getTransaction().begin(); - Assert.assertEquals( document, session.get( Document.class, document.getId() ) ); - session.getTransaction().commit(); - - session.clear(); - - // Delete - session.getTransaction().begin(); - document = (Document) session.get( Document.class, document.getId() ); - session.delete( document ); - session.getTransaction().commit(); - - session.clear(); - - session.getTransaction().begin(); - Assert.assertNull( session.get( Document.class, document.getId() ) ); - session.getTransaction().commit(); - - session.close(); - } -} diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/exceptionhandling/BaseJpaOrNativeBootstrapFunctionalTestCase.java b/hibernate-core/src/test/java/org/hibernate/orm/test/exceptionhandling/BaseJpaOrNativeBootstrapFunctionalTestCase.java index 8444ab1c30..a299d4e225 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/exceptionhandling/BaseJpaOrNativeBootstrapFunctionalTestCase.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/exceptionhandling/BaseJpaOrNativeBootstrapFunctionalTestCase.java @@ -288,7 +288,6 @@ private Properties buildProperties() { if ( createSchema() ) { properties.put( AvailableSettings.HBM2DDL_AUTO, "create-drop" ); } - properties.put( AvailableSettings.USE_NEW_ID_GENERATOR_MAPPINGS, "true" ); properties.put( AvailableSettings.DIALECT, getDialect().getClass().getName() ); return properties; diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/id/Car.hbm.xml b/hibernate-core/src/test/java/org/hibernate/orm/test/id/Car.hbm.xml deleted file mode 100644 index fb98fb3f1d..0000000000 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/id/Car.hbm.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - 0 - - - - - - diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/id/Car.java b/hibernate-core/src/test/java/org/hibernate/orm/test/id/Car.java deleted file mode 100644 index dc7e26a86e..0000000000 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/id/Car.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Hibernate, Relational Persistence for Idiomatic Java - * - * License: GNU Lesser General Public License (LGPL), version 2.1 or later. - * See the lgpl.txt file in the root directory or . - */ - -//$Id: Car.java 5686 2005-02-12 07:27:32Z steveebersole $ -package org.hibernate.orm.test.id; - - -/** - * @author Emmanuel Bernard - */ -public class Car { - private Long id; - private String color; - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getColor() { - return color; - } - - public void setColor(String color) { - this.color = color; - } -} diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/id/MultipleHiLoPerTableGeneratorTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/id/MultipleHiLoPerTableGeneratorTest.java deleted file mode 100644 index 8e0e20014e..0000000000 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/id/MultipleHiLoPerTableGeneratorTest.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Hibernate, Relational Persistence for Idiomatic Java - * - * License: GNU Lesser General Public License (LGPL), version 2.1 or later. - * See the lgpl.txt file in the root directory or . - */ -package org.hibernate.orm.test.id; - - -import org.hibernate.testing.orm.junit.DomainModel; -import org.hibernate.testing.orm.junit.SessionFactory; -import org.hibernate.testing.orm.junit.SessionFactoryScope; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -/** - * @author Emmanuel Bernard - */ -@DomainModel( - xmlMappings = { - "org/hibernate/orm/test/id/Car.hbm.xml", - "org/hibernate/orm/test/id/Plane.hbm.xml", - "org/hibernate/orm/test/id/Radio.hbm.xml" - } -) -@SessionFactory -public class MultipleHiLoPerTableGeneratorTest { - - @AfterEach - public void tearDown(SessionFactoryScope scope) { - scope.inTransaction( - session -> { - session.createQuery( "delete from Car" ).executeUpdate(); - session.createQuery( "delete from Plane" ).executeUpdate(); - session.createQuery( "delete from Radio" ).executeUpdate(); - } - ); - } - - @Test - public void testDistinctId(SessionFactoryScope scope) { - int testLength = 8; - Car[] cars = new Car[testLength]; - scope.inTransaction( - session -> { - Plane[] planes = new Plane[testLength]; - for ( int i = 0; i < testLength; i++ ) { - cars[i] = new Car(); - cars[i].setColor( "Color" + i ); - planes[i] = new Plane(); - planes[i].setNbrOfSeats( i ); - session.persist( cars[i] ); - //s.persist(planes[i]); - } - } - ); - - for ( int i = 0; i < testLength; i++ ) { - assertEquals( i + 1, cars[i].getId().intValue() ); - //assertEquals(i+1, planes[i].getId().intValue()); - } - } - - @Test - public void testAllParams(SessionFactoryScope scope) { - scope.inTransaction( - session -> { - Radio radio = new Radio(); - radio.setFrequency( "32 MHz" ); - session.persist( radio ); - assertEquals( new Integer( 1 ), radio.getId() ); - radio = new Radio(); - radio.setFrequency( "32 MHz" ); - session.persist( radio ); - assertEquals( new Integer( 2 ), radio.getId() ); - } - ); - } -} diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/id/MultipleHiLoPerTableGeneratorWithRollbackTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/id/MultipleHiLoPerTableGeneratorWithRollbackTest.java deleted file mode 100644 index db31177884..0000000000 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/id/MultipleHiLoPerTableGeneratorWithRollbackTest.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Hibernate, Relational Persistence for Idiomatic Java - * - * License: GNU Lesser General Public License (LGPL), version 2.1 or later. - * See the lgpl.txt file in the root directory or . - */ -package org.hibernate.orm.test.id; - - -import org.hibernate.testing.orm.junit.DomainModel; -import org.hibernate.testing.orm.junit.SessionFactory; -import org.hibernate.testing.orm.junit.SessionFactoryScope; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -/** - * @author Emmanuel Bernard - */ -@DomainModel( - xmlMappings = { - "org/hibernate/orm/test/id/Car.hbm.xml" - } -) -@SessionFactory -public class MultipleHiLoPerTableGeneratorWithRollbackTest { - - @AfterEach - public void tearDown(SessionFactoryScope scope) { - scope.inTransaction( - session -> { - session.createQuery( "delete from Car" ).executeUpdate(); - } - ); - } - - - @Test - public void testRollingBack(SessionFactoryScope scope) { - int testLength = 3; - Long lastId = scope.fromSession( - session -> { - session.getTransaction().begin(); - try { - Long id = null; - for ( int i = 0; i < testLength; i++ ) { - Car car = new Car(); - car.setColor( "color " + i ); - session.save( car ); - id = car.getId(); - } - return id; - } - finally { - session.getTransaction().rollback(); - } - } - ); - - Car car = new Car(); - scope.inTransaction( - session -> { - car.setColor( "blue" ); - session.save( car ); - session.flush(); - } - ); - - assertEquals( lastId.longValue() + 1, car.getId().longValue(), "id generation was rolled back" ); - } - -} diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/id/Plane.hbm.xml b/hibernate-core/src/test/java/org/hibernate/orm/test/id/Plane.hbm.xml deleted file mode 100644 index a1995201d2..0000000000 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/id/Plane.hbm.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - 2 - - - - - - diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/id/Plane.java b/hibernate-core/src/test/java/org/hibernate/orm/test/id/Plane.java deleted file mode 100644 index 926255b609..0000000000 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/id/Plane.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Hibernate, Relational Persistence for Idiomatic Java - * - * License: GNU Lesser General Public License (LGPL), version 2.1 or later. - * See the lgpl.txt file in the root directory or . - */ - -//$Id: Plane.java 5686 2005-02-12 07:27:32Z steveebersole $ -package org.hibernate.orm.test.id; - - -/** - * @author Emmanuel Bernard - */ -public class Plane { - private Long id; - private int nbrOfSeats; - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getNbrOfSeats() { - return nbrOfSeats; - } - - public void setNbrOfSeats(int nbrOfSeats) { - this.nbrOfSeats = nbrOfSeats; - } -} diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/id/PooledHiLoSequenceIdentifierTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/id/PooledHiLoSequenceIdentifierTest.java index 33aabe6397..2fc29d9c16 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/id/PooledHiLoSequenceIdentifierTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/id/PooledHiLoSequenceIdentifierTest.java @@ -44,7 +44,6 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; -import static org.hibernate.cfg.AvailableSettings.USE_NEW_ID_GENERATOR_MAPPINGS; import static org.junit.jupiter.api.Assertions.assertEquals; /** @@ -55,7 +54,6 @@ annotatedClasses = PooledHiLoSequenceIdentifierTest.SequenceIdentifier.class ) @SessionFactory -@ServiceRegistry(settings = @Setting(name = USE_NEW_ID_GENERATOR_MAPPINGS, value = "true")) public class PooledHiLoSequenceIdentifierTest { @AfterEach diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/id/Radio.hbm.xml b/hibernate-core/src/test/java/org/hibernate/orm/test/id/Radio.hbm.xml deleted file mode 100644 index 37841120e5..0000000000 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/id/Radio.hbm.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - sequences - hi_value - name - 50 - 2 - Radio - - - - - - diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/id/Radio.java b/hibernate-core/src/test/java/org/hibernate/orm/test/id/Radio.java deleted file mode 100644 index 4e01bffe2a..0000000000 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/id/Radio.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Hibernate, Relational Persistence for Idiomatic Java - * - * License: GNU Lesser General Public License (LGPL), version 2.1 or later. - * See the lgpl.txt file in the root directory or . - */ - -//$Id: Radio.java 5686 2005-02-12 07:27:32Z steveebersole $ -package org.hibernate.orm.test.id; - - -/** - * @author Emmanuel Bernard - */ -public class Radio { - private Integer id; - private String frequency; - - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - - public String getFrequency() { - return frequency; - } - - public void setFrequency(String frequency) { - this.frequency = frequency; - } -} diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/id/SequenceGeneratorTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/id/SequenceGeneratorTest.java index 1498429605..d7e9177be7 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/id/SequenceGeneratorTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/id/SequenceGeneratorTest.java @@ -27,9 +27,6 @@ xmlMappings = "org/hibernate/orm/test/id/Person.hbm.xml" ) @SessionFactory(statementInspectorClass = SQLStatementInspector.class) -@ServiceRegistry( - settings = @Setting(name = Environment.USE_NEW_ID_GENERATOR_MAPPINGS, value = "false") -) public class SequenceGeneratorTest { diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/id/SequenceHiLoGeneratorNoIncrementTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/id/SequenceHiLoGeneratorNoIncrementTest.java deleted file mode 100644 index 105dc4a4b8..0000000000 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/id/SequenceHiLoGeneratorNoIncrementTest.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Hibernate, Relational Persistence for Idiomatic Java - * - * License: GNU Lesser General Public License (LGPL), version 2.1 or later. - * See the lgpl.txt file in the root directory or . - */ -package org.hibernate.orm.test.id; - -import java.util.Properties; - -import org.hibernate.Session; -import org.hibernate.boot.Metadata; -import org.hibernate.boot.MetadataSources; -import org.hibernate.boot.registry.StandardServiceRegistry; -import org.hibernate.boot.registry.StandardServiceRegistryBuilder; -import org.hibernate.boot.spi.MetadataBuildingContext; -import org.hibernate.cfg.AvailableSettings; -import org.hibernate.engine.spi.SessionFactoryImplementor; -import org.hibernate.engine.spi.SessionImplementor; -import org.hibernate.engine.spi.SharedSessionContractImplementor; -import org.hibernate.id.PersistentIdentifierGenerator; -import org.hibernate.id.SequenceGenerator; -import org.hibernate.id.SequenceHiLoGenerator; -import org.hibernate.type.StandardBasicTypes; - - -import org.hibernate.testing.boot.MetadataBuildingContextTestingImpl; -import org.hibernate.testing.orm.junit.BaseUnitTest; -import org.hibernate.testing.orm.junit.DialectFeatureChecks.SupportsSequences; -import org.hibernate.testing.orm.junit.RequiresDialectFeature; -import org.hibernate.testing.transaction.TransactionUtil; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -/** - * I went back to 3.3 source and grabbed the code/logic as it existed back then and crafted this - * unit test so that we can make sure the value keep being generated in the expected manner - * - * @author Steve Ebersole - */ -@SuppressWarnings({"deprecation"}) -@RequiresDialectFeature(feature = SupportsSequences.class) -@BaseUnitTest -public class SequenceHiLoGeneratorNoIncrementTest { - private static final String TEST_SEQUENCE = "test_sequence"; - - private StandardServiceRegistry serviceRegistry; - private SessionFactoryImplementor sessionFactory; - private SequenceGenerator generator; - private SequenceValueExtractor sequenceValueExtractor; - - @BeforeEach - public void setUp() throws Exception { - serviceRegistry = new StandardServiceRegistryBuilder() - .enableAutoClose() - .applySetting( AvailableSettings.HBM2DDL_AUTO, "create-drop" ) - .build(); - - - MetadataBuildingContext buildingContext = new MetadataBuildingContextTestingImpl( serviceRegistry ); - // Build the properties used to configure the id generator - Properties properties = new Properties(); - properties.setProperty( SequenceGenerator.SEQUENCE, TEST_SEQUENCE ); - properties.setProperty( SequenceHiLoGenerator.MAX_LO, "0" ); // JPA allocationSize of 1 - - properties.put( - PersistentIdentifierGenerator.IDENTIFIER_NORMALIZER, - buildingContext.getObjectNameNormalizer() - ); - - generator = new SequenceHiLoGenerator(); - generator.configure( - buildingContext.getBootstrapContext() - .getTypeConfiguration() - .getBasicTypeRegistry() - .resolve( StandardBasicTypes.LONG ), - properties, - serviceRegistry - ); - - final Metadata metadata = new MetadataSources( serviceRegistry ).buildMetadata(); - generator.registerExportables( metadata.getDatabase() ); - - sessionFactory = (SessionFactoryImplementor) metadata.buildSessionFactory(); - generator.initialize( sessionFactory.getSqlStringGenerationContext() ); - sequenceValueExtractor = new SequenceValueExtractor( sessionFactory.getDialect(), TEST_SEQUENCE ); - } - - @AfterEach - public void tearDown() { - if ( sessionFactory != null ) { - sessionFactory.close(); - } - if ( serviceRegistry != null ) { - StandardServiceRegistryBuilder.destroy( serviceRegistry ); - } - } - - @Test - public void testHiLoAlgorithm() { - TransactionUtil.doInHibernate( - () -> sessionFactory, - session -> { - assertEquals( 1L, generateValue( session ) ); - - assertEquals( 1L, extractSequenceValue( session ) ); - - assertEquals( 2L, generateValue( session ) ); - assertEquals( 2L, extractSequenceValue( session ) ); - - assertEquals( 3L, generateValue( session ) ); - assertEquals( 3L, extractSequenceValue( session ) ); - - assertEquals( 4L, generateValue( session ) ); - assertEquals( 4L, extractSequenceValue( session ) ); - - assertEquals( 5L, generateValue( session ) ); - assertEquals( 5L, extractSequenceValue( session ) ); - } - ); - } - - private long extractSequenceValue(Session session) { - return sequenceValueExtractor.extractSequenceValue( (SessionImplementor) session ); - } - - private long generateValue(Session session) { - return (Long) generator.generate( (SharedSessionContractImplementor) session, null ); - } -} diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/id/SequenceHiLoGeneratorTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/id/SequenceHiLoGeneratorTest.java deleted file mode 100644 index 9d5136099e..0000000000 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/id/SequenceHiLoGeneratorTest.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Hibernate, Relational Persistence for Idiomatic Java - * - * License: GNU Lesser General Public License (LGPL), version 2.1 or later. - * See the lgpl.txt file in the root directory or . - */ -package org.hibernate.orm.test.id; - -import java.util.Properties; - -import org.hibernate.Session; -import org.hibernate.boot.Metadata; -import org.hibernate.boot.MetadataSources; -import org.hibernate.boot.model.relational.Database; -import org.hibernate.boot.model.relational.internal.SqlStringGenerationContextImpl; -import org.hibernate.boot.registry.StandardServiceRegistry; -import org.hibernate.boot.registry.StandardServiceRegistryBuilder; -import org.hibernate.boot.spi.MetadataBuildingContext; -import org.hibernate.cfg.AvailableSettings; -import org.hibernate.engine.spi.SessionFactoryImplementor; -import org.hibernate.engine.spi.SessionImplementor; -import org.hibernate.engine.spi.SharedSessionContractImplementor; -import org.hibernate.id.PersistentIdentifierGenerator; -import org.hibernate.id.SequenceGenerator; -import org.hibernate.id.SequenceHiLoGenerator; -import org.hibernate.type.StandardBasicTypes; - -import org.hibernate.testing.boot.MetadataBuildingContextTestingImpl; -import org.hibernate.testing.orm.junit.BaseUnitTest; -import org.hibernate.testing.orm.junit.DialectFeatureChecks.SupportsSequences; -import org.hibernate.testing.orm.junit.RequiresDialectFeature; -import org.hibernate.testing.transaction.TransactionUtil; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -/** - * I went back to 3.3 source and grabbed the code/logic as it existed back then and crafted this - * unit test so that we can make sure the value keep being generated in the expected manner - * - * @author Steve Ebersole - */ -@SuppressWarnings({"deprecation"}) -@RequiresDialectFeature(feature = SupportsSequences.class) -@BaseUnitTest -public class SequenceHiLoGeneratorTest { - private static final String TEST_SEQUENCE = "test_sequence"; - - private StandardServiceRegistry serviceRegistry; - private SessionFactoryImplementor sessionFactory; - private SequenceHiLoGenerator generator; - private SequenceValueExtractor sequenceValueExtractor; - - @BeforeEach - public void setUp() throws Exception { - serviceRegistry = new StandardServiceRegistryBuilder() - .enableAutoClose() - .applySetting( AvailableSettings.HBM2DDL_AUTO, "create-drop" ) - .build(); - - MetadataBuildingContext buildingContext = new MetadataBuildingContextTestingImpl( serviceRegistry ); - - Properties properties = new Properties(); - properties.setProperty( SequenceGenerator.SEQUENCE, TEST_SEQUENCE ); - properties.setProperty( SequenceHiLoGenerator.MAX_LO, "3" ); - properties.put( - PersistentIdentifierGenerator.IDENTIFIER_NORMALIZER, - buildingContext.getObjectNameNormalizer() - ); - - generator = new SequenceHiLoGenerator(); - generator.configure( - buildingContext.getBootstrapContext() - .getTypeConfiguration() - .getBasicTypeRegistry() - .resolve( StandardBasicTypes.LONG ), - properties, - serviceRegistry - ); - - Metadata metadata = new MetadataSources( serviceRegistry ).buildMetadata(); - Database database = metadata.getDatabase(); - generator.registerExportables( database ); - - generator.initialize( SqlStringGenerationContextImpl.forTests( database.getJdbcEnvironment() ) ); - - sessionFactory = (SessionFactoryImplementor) metadata.buildSessionFactory(); - sequenceValueExtractor = new SequenceValueExtractor( sessionFactory.getDialect(), TEST_SEQUENCE ); - } - - @AfterEach - public void tearDown() { - if ( sessionFactory != null ) { - sessionFactory.close(); - } - if ( serviceRegistry != null ) { - StandardServiceRegistryBuilder.destroy( serviceRegistry ); - } - } - - @Test - public void testHiLoAlgorithm() { - TransactionUtil.doInHibernate( - () -> sessionFactory, - session -> { - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - // historically the hilo generators skipped the initial block of values; - // so the first generated id value is maxlo + 1, here be 4 - assertEquals( 4L, generateValue( session ) ); - // which should also perform the first read on the sequence which should set it to its "start with" value (1) - assertEquals( 1L, extractSequenceValue( session ) ); - - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - assertEquals( 5L, generateValue( session ) ); - assertEquals( 1L, extractSequenceValue( session ) ); - - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - assertEquals( 6L, generateValue( session ) ); - assertEquals( 1L, extractSequenceValue( session ) ); - - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - assertEquals( 7L, generateValue( session ) ); - // unlike the newer strategies, the db value will not get update here. It gets updated on the next invocation - // after a clock over - assertEquals( 1L, extractSequenceValue( session ) ); - - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - assertEquals( 8L, generateValue( session ) ); - // this should force an increment in the sequence value - assertEquals( 2L, extractSequenceValue( session ) ); - } - ); - } - - private long extractSequenceValue(Session session) { - return sequenceValueExtractor.extractSequenceValue( (SessionImplementor) session ); - } - - private long generateValue(Session session) { - return (Long) generator.generate( (SharedSessionContractImplementor) session, null ); - } -} diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/id/sequence/LegacySequenceExportTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/id/sequence/LegacySequenceExportTest.java deleted file mode 100644 index d0b20a79c6..0000000000 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/id/sequence/LegacySequenceExportTest.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Hibernate, Relational Persistence for Idiomatic Java - * - * License: GNU Lesser General Public License (LGPL), version 2.1 or later. - * See the lgpl.txt file in the root directory or . - */ -package org.hibernate.orm.test.id.sequence; - -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.SequenceGenerator; -import jakarta.persistence.Table; - -import org.hibernate.boot.MetadataSources; -import org.hibernate.boot.model.relational.Namespace; -import org.hibernate.boot.model.relational.Sequence; -import org.hibernate.boot.registry.StandardServiceRegistry; -import org.hibernate.boot.registry.StandardServiceRegistryBuilder; -import org.hibernate.boot.spi.MetadataImplementor; -import org.hibernate.cfg.AvailableSettings; - -import org.hibernate.testing.TestForIssue; -import org.hibernate.testing.orm.junit.BaseUnitTest; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -/** - * @author Steve Ebersole - */ -@BaseUnitTest -public class LegacySequenceExportTest { - private StandardServiceRegistry ssr; - - @BeforeEach - public void prepare() { - ssr = new StandardServiceRegistryBuilder() - .applySetting( AvailableSettings.USE_NEW_ID_GENERATOR_MAPPINGS, "false" ) - .build(); - } - - @AfterEach - public void destroy() { - StandardServiceRegistryBuilder.destroy( ssr ); - } - - @Test - @TestForIssue(jiraKey = "HHH-9936") - public void testMultipleUsesOfDefaultSequenceName() { - final MetadataImplementor metadata = (MetadataImplementor) new MetadataSources( ssr ) - .addAnnotatedClass( Entity1.class ) - .addAnnotatedClass( Entity2.class ) - .buildMetadata(); - metadata.validate(); - - assertEquals( 0, metadata.getDatabase().getAuxiliaryDatabaseObjects().size() ); - - int count = 0; - for ( Namespace namespace : metadata.getDatabase().getNamespaces() ) { - for ( Sequence sequence : namespace.getSequences() ) { - count++; - } - } - - assertEquals( 1, count ); - } - - @Test - @TestForIssue(jiraKey = "HHH-9936") - public void testMultipleUsesOfExplicitSequenceName() { - final MetadataImplementor metadata = (MetadataImplementor) new MetadataSources( ssr ) - .addAnnotatedClass( Entity3.class ) - .addAnnotatedClass( Entity4.class ) - .buildMetadata(); - metadata.validate(); - - assertEquals( 0, metadata.getDatabase().getAuxiliaryDatabaseObjects().size() ); - - int count = 0; - for ( Namespace namespace : metadata.getDatabase().getNamespaces() ) { - for ( Sequence sequence : namespace.getSequences() ) { - count++; - } - } - - assertEquals( 1, count ); - } - - @Entity(name = "Entity1") - @Table(name = "Entity1") - public static class Entity1 { - @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE) - public Integer id; - } - - @Entity(name = "Entity2") - @Table(name = "Entity2") - public static class Entity2 { - @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE) - public Integer id; - } - - @Entity(name = "Entity3") - @Table(name = "Entity3") - public static class Entity3 { - @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE) - @SequenceGenerator(name = "my_sequence") - public Integer id; - } - - @Entity(name = "Entity4") - @Table(name = "Entity4") - public static class Entity4 { - @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE) - @SequenceGenerator(name = "my_sequence") - public Integer id; - } -} diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/idgen/enhanced/table/Db2GenerationTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/idgen/enhanced/table/Db2GenerationTest.java index 91fcb29ce4..e07066b248 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/idgen/enhanced/table/Db2GenerationTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/idgen/enhanced/table/Db2GenerationTest.java @@ -17,13 +17,11 @@ import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.AvailableSettings; import org.hibernate.dialect.DB2Dialect; -import org.hibernate.id.MultipleHiLoPerTableGenerator; import org.hibernate.id.enhanced.TableGenerator; import org.hibernate.mapping.Table; import org.hibernate.type.StandardBasicTypes; import org.hibernate.testing.TestForIssue; - import org.junit.jupiter.api.Test; import static org.hamcrest.Matchers.containsString; @@ -72,46 +70,4 @@ public void testNewGeneratorTableCreationOnDb2() { } } - @Test - @TestForIssue( jiraKey = "HHH-9850" ) - public void testLegacyGeneratorTableCreationOnDb2() { - final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder() - .applySetting( AvailableSettings.DIALECT, DB2Dialect.class.getName() ) - .build(); - - try { - Metadata metadata = new MetadataSources( ssr ) - .buildMetadata(); - - assertEquals( 0, metadata.getDatabase().getDefaultNamespace().getTables().size() ); - - MultipleHiLoPerTableGenerator generator = new MultipleHiLoPerTableGenerator(); - - Properties properties = new Properties(); - generator.configure( - metadata.getDatabase() - .getTypeConfiguration() - .getBasicTypeRegistry() - .resolve( StandardBasicTypes.INTEGER ), - new Properties(), - ssr - ); - - generator.registerExportables( metadata.getDatabase() ); - - assertEquals( 1, metadata.getDatabase().getDefaultNamespace().getTables().size() ); - - Database database = metadata.getDatabase(); - final Table table = database.getDefaultNamespace().getTables().iterator().next(); - SqlStringGenerationContext sqlStringGenerationContext = - SqlStringGenerationContextImpl.forTests( database.getJdbcEnvironment() ); - final String[] createCommands = new DB2Dialect().getTableExporter().getSqlCreateStrings( table, metadata, - sqlStringGenerationContext - ); - assertThat( createCommands[0], containsString( "sequence_name varchar(255) not null" ) ); - } - finally { - StandardServiceRegistryBuilder.destroy( ssr ); - } - } } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/BaseEntityManagerFunctionalTestCase.java b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/BaseEntityManagerFunctionalTestCase.java index d3be065b2a..1a752e17c6 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/BaseEntityManagerFunctionalTestCase.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/BaseEntityManagerFunctionalTestCase.java @@ -189,7 +189,6 @@ protected Map buildSettings() { if ( createSchema() ) { settings.put( AvailableSettings.HBM2DDL_AUTO, "create-drop" ); } - settings.put( AvailableSettings.USE_NEW_ID_GENERATOR_MAPPINGS, "true" ); settings.put( AvailableSettings.DIALECT, getDialect().getClass().getName() ); return settings; } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/ejb3configuration/InterceptorTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/ejb3configuration/InterceptorTest.java index eec14e859c..ddfc98c9f5 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/ejb3configuration/InterceptorTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/ejb3configuration/InterceptorTest.java @@ -274,7 +274,6 @@ public void testOnLoadCallInInterceptor() { protected Map basicSettings() { return SettingsGenerator.generateSettings( AvailableSettings.HBM2DDL_AUTO, "create-drop", - AvailableSettings.USE_NEW_ID_GENERATOR_MAPPINGS, "true", AvailableSettings.DIALECT, DialectContext.getDialect().getClass().getName(), AvailableSettings.LOADED_CLASSES, Arrays.asList( getAnnotatedClasses() ) ); diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/lock/QueryLockingTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/lock/QueryLockingTest.java index 3dc1a30d33..0ed1c9b8dd 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/lock/QueryLockingTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/lock/QueryLockingTest.java @@ -53,12 +53,6 @@ protected Class[] getAnnotatedClasses() { return new Class[] {Person.class, Lockable.class, LocalEntity.class}; } - @Override - @SuppressWarnings({ "unchecked" }) - protected void addConfigOptions(Map options) { - options.put( org.hibernate.cfg.AvailableSettings.USE_NEW_ID_GENERATOR_MAPPINGS, "true" ); - } - @Test public void testOverallLockMode() { EntityManager em = getOrCreateEntityManager(); diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/mapping/UnidirectionalOneToManyIndexColumnTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/mapping/UnidirectionalOneToManyIndexColumnTest.java index 7a5fe4e8f8..9f52d21b53 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/mapping/UnidirectionalOneToManyIndexColumnTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/mapping/UnidirectionalOneToManyIndexColumnTest.java @@ -39,7 +39,6 @@ UnidirectionalOneToManyIndexColumnTest.Child.class }, integrationSettings = { - @Setting(name = AvailableSettings.USE_NEW_ID_GENERATOR_MAPPINGS, value = "true"), @Setting(name = AvailableSettings.HBM2DDL_AUTO, value = "create-drop"), @Setting(name = AvailableSettings.IMPLICIT_NAMING_STRATEGY, value = "org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl") } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/transaction/TransactionCommitFailureTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/transaction/TransactionCommitFailureTest.java index 8d67790a3d..a5f44f649a 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/transaction/TransactionCommitFailureTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/transaction/TransactionCommitFailureTest.java @@ -110,7 +110,6 @@ public void assertConnectionIsReleasedIfRollbackFails() { private Map basicSettings() { return SettingsGenerator.generateSettings( Environment.HBM2DDL_AUTO, "create-drop", - Environment.USE_NEW_ID_GENERATOR_MAPPINGS, "true", Environment.DIALECT, DialectContext.getDialect().getClass().getName(), Environment.CONNECTION_PROVIDER, ProxyConnectionProvider.class.getName() ); diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/nationalized/NationalizedLobFieldTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/nationalized/NationalizedLobFieldTest.java index a9ca953734..c91f6bbef0 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/nationalized/NationalizedLobFieldTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/nationalized/NationalizedLobFieldTest.java @@ -6,26 +6,23 @@ */ package org.hibernate.orm.test.nationalized; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Lob; -import jakarta.persistence.Table; - import org.hibernate.annotations.Nationalized; -import org.hibernate.cfg.AvailableSettings; import org.hibernate.testing.TestForIssue; import org.hibernate.testing.orm.junit.DialectFeatureChecks; import org.hibernate.testing.orm.junit.DomainModel; import org.hibernate.testing.orm.junit.RequiresDialectFeature; -import org.hibernate.testing.orm.junit.ServiceRegistry; import org.hibernate.testing.orm.junit.SessionFactory; import org.hibernate.testing.orm.junit.SessionFactoryScope; -import org.hibernate.testing.orm.junit.Setting; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Lob; +import jakarta.persistence.Table; + import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -39,9 +36,6 @@ annotatedClasses = NationalizedLobFieldTest.MyEntity.class ) @SessionFactory -@ServiceRegistry( - settings = @Setting(name = AvailableSettings.USE_NEW_ID_GENERATOR_MAPPINGS, value = "false") -) public class NationalizedLobFieldTest { @BeforeEach diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/JoinTableWithDefaultSchemaTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/JoinTableWithDefaultSchemaTest.java index b9861e01a4..676c855a87 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/JoinTableWithDefaultSchemaTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/JoinTableWithDefaultSchemaTest.java @@ -42,7 +42,6 @@ public class JoinTableWithDefaultSchemaTest extends BaseUnitTestCase { public void testGetTableDataForJoinTableWithDefaultSchema() { StandardServiceRegistry ssr = new StandardServiceRegistryBuilder() .applySetting( AvailableSettings.DEFAULT_CATALOG, "hibernate_orm_test" ) - .applySetting( AvailableSettings.USE_NEW_ID_GENERATOR_MAPPINGS, "false" ) .build(); try { final MetadataImplementor metadata = (MetadataImplementor) new MetadataSources( ssr ) diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/util/PropertiesHelperTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/util/PropertiesHelperTest.java index 63c055eeee..1c24214f61 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/util/PropertiesHelperTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/util/PropertiesHelperTest.java @@ -57,7 +57,7 @@ public void testPlaceholderReplacement() { String str = ConfigurationHelper.getString( "my.nonexistent.prop", props, "did.not.exist" ); assertEquals( "did.not.exist", str ); - str = ConfigurationHelper.getString( "my.nonexistent.prop", props, null ); + str = ConfigurationHelper.getString( "my.nonexistent.prop", props ); assertNull( str ); str = ConfigurationHelper.getString( "my.string.prop", props, "na" ); assertEquals( "replacement did not occur", "string", str ); diff --git a/hibernate-core/src/test/java/org/hibernate/test/boot/database/qualfiedTableNaming/DefaultCatalogAndSchemaTest.java b/hibernate-core/src/test/java/org/hibernate/test/boot/database/qualfiedTableNaming/DefaultCatalogAndSchemaTest.java index a41d55ebb4..a7232c1b2c 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/boot/database/qualfiedTableNaming/DefaultCatalogAndSchemaTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/boot/database/qualfiedTableNaming/DefaultCatalogAndSchemaTest.java @@ -6,8 +6,6 @@ */ package org.hibernate.test.boot.database.qualfiedTableNaming; -import static org.assertj.core.api.Assertions.assertThat; - import java.io.StringWriter; import java.util.ArrayList; import java.util.Arrays; @@ -17,21 +15,6 @@ import java.util.List; import java.util.Map; import java.util.regex.Pattern; -import jakarta.persistence.Basic; -import jakarta.persistence.ElementCollection; -import jakarta.persistence.Entity; -import jakarta.persistence.ForeignKey; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.Inheritance; -import jakarta.persistence.InheritanceType; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.JoinTable; -import jakarta.persistence.OneToMany; -import jakarta.persistence.SequenceGenerator; -import jakarta.persistence.Table; -import jakarta.persistence.TableGenerator; import org.hibernate.MappingException; import org.hibernate.annotations.GenericGenerator; @@ -58,7 +41,6 @@ import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.id.IdentifierGenerator; import org.hibernate.persister.entity.AbstractEntityPersister; -import org.hibernate.persister.entity.EntityPersister; import org.hibernate.query.sqm.mutation.internal.temptable.GlobalTemporaryTableStrategy; import org.hibernate.query.sqm.mutation.internal.temptable.LocalTemporaryTableStrategy; import org.hibernate.service.spi.ServiceRegistryImplementor; @@ -79,6 +61,24 @@ import org.junit.runner.RunWith; import org.junit.runners.Parameterized; +import jakarta.persistence.Basic; +import jakarta.persistence.ElementCollection; +import jakarta.persistence.Entity; +import jakarta.persistence.ForeignKey; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Inheritance; +import jakarta.persistence.InheritanceType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.JoinTable; +import jakarta.persistence.OneToMany; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.TableGenerator; + +import static org.assertj.core.api.Assertions.assertThat; + @RunWith(CustomParameterized.class) @TestForIssue(jiraKey = { "HHH-14921", "HHH-14922" }) public class DefaultCatalogAndSchemaTest { @@ -176,16 +176,12 @@ public void initSessionFactory() { EntityWithExplicitQualifiersWithTableGenerator.class, EntityWithDefaultQualifiersWithSequenceGenerator.class, EntityWithExplicitQualifiersWithSequenceGenerator.class, - EntityWithDefaultQualifiersWithSeqHiLoGenerator.class, - EntityWithExplicitQualifiersWithSeqHiLoGenerator.class, EntityWithDefaultQualifiersWithIncrementGenerator.class, EntityWithExplicitQualifiersWithIncrementGenerator.class, EntityWithDefaultQualifiersWithSequenceIdentityGenerator.class, EntityWithExplicitQualifiersWithSequenceIdentityGenerator.class, EntityWithDefaultQualifiersWithEnhancedSequenceGenerator.class, - EntityWithExplicitQualifiersWithEnhancedSequenceGenerator.class, - EntityWithDefaultQualifiersWithLegacySequenceGenerator.class, - EntityWithExplicitQualifiersWithLegacySequenceGenerator.class + EntityWithExplicitQualifiersWithEnhancedSequenceGenerator.class ); StandardServiceRegistry serviceRegistry; @@ -341,16 +337,12 @@ public void entityPersister() { verifyEntityPersisterQualifiers( EntityWithExplicitQualifiersWithTableGenerator.class, expectedExplicitQualifier() ); verifyEntityPersisterQualifiers( EntityWithDefaultQualifiersWithSequenceGenerator.class, expectedDefaultQualifier() ); verifyEntityPersisterQualifiers( EntityWithExplicitQualifiersWithSequenceGenerator.class, expectedExplicitQualifier() ); - verifyEntityPersisterQualifiers( EntityWithDefaultQualifiersWithSeqHiLoGenerator.class, expectedDefaultQualifier() ); - verifyEntityPersisterQualifiers( EntityWithExplicitQualifiersWithSeqHiLoGenerator.class, expectedExplicitQualifier() ); verifyEntityPersisterQualifiers( EntityWithDefaultQualifiersWithIncrementGenerator.class, expectedDefaultQualifier() ); verifyEntityPersisterQualifiers( EntityWithExplicitQualifiersWithIncrementGenerator.class, expectedExplicitQualifier() ); verifyEntityPersisterQualifiers( EntityWithDefaultQualifiersWithSequenceIdentityGenerator.class, expectedDefaultQualifier() ); verifyEntityPersisterQualifiers( EntityWithExplicitQualifiersWithSequenceIdentityGenerator.class, expectedExplicitQualifier() ); verifyEntityPersisterQualifiers( EntityWithDefaultQualifiersWithEnhancedSequenceGenerator.class, expectedDefaultQualifier() ); verifyEntityPersisterQualifiers( EntityWithExplicitQualifiersWithEnhancedSequenceGenerator.class, expectedExplicitQualifier() ); - verifyEntityPersisterQualifiers( EntityWithDefaultQualifiersWithLegacySequenceGenerator.class, expectedDefaultQualifier() ); - verifyEntityPersisterQualifiers( EntityWithExplicitQualifiersWithLegacySequenceGenerator.class, expectedExplicitQualifier() ); } private void verifyEntityPersisterQualifiers(Class entityClass, ExpectedQualifier expectedQualifier) { @@ -470,32 +462,6 @@ public void enhancedSequenceGenerator() { EntityWithExplicitQualifiersWithEnhancedSequenceGenerator.NAME, expectedExplicitQualifier() ); } - @Test - public void legacySequenceGenerator() { - org.hibernate.id.SequenceGenerator generator = idGenerator( org.hibernate.id.SequenceGenerator.class, - EntityWithDefaultQualifiersWithLegacySequenceGenerator.class ); - verifyOnlyQualifier( generator.getAllSqlForTests(), SqlType.RUNTIME, - EntityWithDefaultQualifiersWithLegacySequenceGenerator.NAME, expectedDefaultQualifier() ); - - generator = idGenerator( org.hibernate.id.SequenceGenerator.class, - EntityWithExplicitQualifiersWithLegacySequenceGenerator.class ); - verifyOnlyQualifier( generator.getAllSqlForTests(), SqlType.RUNTIME, - EntityWithExplicitQualifiersWithLegacySequenceGenerator.NAME, expectedExplicitQualifier() ); - } - - @Test - public void seqHiLoGenerator() { - org.hibernate.id.SequenceHiLoGenerator generator = idGenerator( org.hibernate.id.SequenceHiLoGenerator.class, - EntityWithDefaultQualifiersWithSeqHiLoGenerator.class ); - verifyOnlyQualifier( generator.getAllSqlForTests(), SqlType.RUNTIME, - EntityWithDefaultQualifiersWithSeqHiLoGenerator.NAME, expectedDefaultQualifier() ); - - generator = idGenerator( org.hibernate.id.SequenceHiLoGenerator.class, - EntityWithExplicitQualifiersWithSeqHiLoGenerator.class ); - verifyOnlyQualifier( generator.getAllSqlForTests(), SqlType.RUNTIME, - EntityWithExplicitQualifiersWithSeqHiLoGenerator.NAME, expectedExplicitQualifier() ); - } - @Test public void incrementGenerator() { org.hibernate.id.IncrementGenerator generator = idGenerator( org.hibernate.id.IncrementGenerator.class, @@ -509,19 +475,6 @@ public void incrementGenerator() { EntityWithExplicitQualifiersWithIncrementGenerator.NAME, expectedExplicitQualifier() ); } - @Test - public void sequenceIdentityGenerator() { - org.hibernate.id.SequenceIdentityGenerator generator = idGenerator( org.hibernate.id.SequenceIdentityGenerator.class, - EntityWithDefaultQualifiersWithSequenceIdentityGenerator.class ); - verifyOnlyQualifier( generator.getAllSqlForTests(), SqlType.RUNTIME, - EntityWithDefaultQualifiersWithSequenceIdentityGenerator.NAME, expectedDefaultQualifier() ); - - generator = idGenerator( org.hibernate.id.SequenceIdentityGenerator.class, - EntityWithExplicitQualifiersWithSequenceIdentityGenerator.class ); - verifyOnlyQualifier( generator.getAllSqlForTests(), SqlType.RUNTIME, - EntityWithExplicitQualifiersWithSequenceIdentityGenerator.NAME, expectedExplicitQualifier() ); - } - private T idGenerator(Class expectedType, Class entityClass) { AbstractEntityPersister persister = (AbstractEntityPersister) sessionFactory.getMetamodel().entityPersister( entityClass ); @@ -558,16 +511,12 @@ private void verifyDDLQualifiers(String sql) { verifyOnlyQualifier( sql, SqlType.DDL, EntityWithExplicitQualifiersWithTableGenerator.NAME, expectedExplicitQualifier() ); verifyOnlyQualifier( sql, SqlType.DDL, EntityWithDefaultQualifiersWithSequenceGenerator.NAME, expectedDefaultQualifier() ); verifyOnlyQualifier( sql, SqlType.DDL, EntityWithExplicitQualifiersWithSequenceGenerator.NAME, expectedExplicitQualifier() ); - verifyOnlyQualifier( sql, SqlType.DDL, EntityWithDefaultQualifiersWithSeqHiLoGenerator.NAME, expectedDefaultQualifier() ); - verifyOnlyQualifier( sql, SqlType.DDL, EntityWithExplicitQualifiersWithSeqHiLoGenerator.NAME, expectedExplicitQualifier() ); verifyOnlyQualifier( sql, SqlType.DDL, EntityWithDefaultQualifiersWithIncrementGenerator.NAME, expectedDefaultQualifier() ); verifyOnlyQualifier( sql, SqlType.DDL, EntityWithExplicitQualifiersWithIncrementGenerator.NAME, expectedExplicitQualifier() ); verifyOnlyQualifier( sql, SqlType.DDL, EntityWithDefaultQualifiersWithSequenceIdentityGenerator.NAME, expectedDefaultQualifier() ); verifyOnlyQualifier( sql, SqlType.DDL, EntityWithExplicitQualifiersWithSequenceIdentityGenerator.NAME, expectedExplicitQualifier() ); verifyOnlyQualifier( sql, SqlType.DDL, EntityWithDefaultQualifiersWithEnhancedSequenceGenerator.NAME, expectedDefaultQualifier() ); verifyOnlyQualifier( sql, SqlType.DDL, EntityWithExplicitQualifiersWithEnhancedSequenceGenerator.NAME, expectedExplicitQualifier() ); - verifyOnlyQualifier( sql, SqlType.DDL, EntityWithDefaultQualifiersWithLegacySequenceGenerator.NAME, expectedDefaultQualifier() ); - verifyOnlyQualifier( sql, SqlType.DDL, EntityWithExplicitQualifiersWithLegacySequenceGenerator.NAME, expectedExplicitQualifier() ); } private enum SqlType { @@ -1079,36 +1028,6 @@ public static class EntityWithExplicitQualifiersWithTableGenerator { private String basic; } - @Entity(name = EntityWithDefaultQualifiersWithSeqHiLoGenerator.NAME) - public static class EntityWithDefaultQualifiersWithSeqHiLoGenerator { - public static final String NAME = "EntityWithDefaultQualifiersWithSeqHiLoGenerator"; - @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = NAME + "_generator") - @GenericGenerator(name = NAME + "_generator", strategy = "org.hibernate.id.SequenceHiLoGenerator", parameters = { - @Parameter(name = "sequence", value = NAME + "_seq"), - @Parameter(name = "max_lo", value = "5") - }) - private Long id; - @Basic - private String basic; - } - - @Entity(name = EntityWithExplicitQualifiersWithSeqHiLoGenerator.NAME) - @Table(catalog = EXPLICIT_CATALOG, schema = EXPLICIT_SCHEMA) - public static class EntityWithExplicitQualifiersWithSeqHiLoGenerator { - public static final String NAME = "EntityWithExplicitQualifiersWithSeqHiLoGenerator"; - @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = NAME + "_generator") - @GenericGenerator(name = NAME + "_generator", strategy = "org.hibernate.id.SequenceHiLoGenerator", parameters = { - @Parameter(name = "sequence", value = NAME + "_seq"), - @Parameter(name = "max_lo", value = "5"), - @Parameter(name = "catalog", value = EXPLICIT_CATALOG), - @Parameter(name = "schema", value = EXPLICIT_SCHEMA) - }) - private Long id; - @Basic - private String basic; - } @Entity(name = EntityWithDefaultQualifiersWithIncrementGenerator.NAME) public static class EntityWithDefaultQualifiersWithIncrementGenerator { @@ -1194,34 +1113,4 @@ public static class EntityWithExplicitQualifiersWithEnhancedSequenceGenerator { private String basic; } - - @Entity(name = EntityWithDefaultQualifiersWithLegacySequenceGenerator.NAME) - public static class EntityWithDefaultQualifiersWithLegacySequenceGenerator { - public static final String NAME = "EntityWithDefaultQualifiersWithLegacySequenceGenerator"; - @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = NAME + "_generator") - @GenericGenerator(name = NAME + "_generator", strategy = "org.hibernate.id.SequenceGenerator", parameters = { - @Parameter(name = "sequence", value = NAME + "_seq") - }) - private Long id; - @Basic - private String basic; - } - - @Entity(name = EntityWithExplicitQualifiersWithLegacySequenceGenerator.NAME) - @Table(catalog = EXPLICIT_CATALOG, schema = EXPLICIT_SCHEMA) - public static class EntityWithExplicitQualifiersWithLegacySequenceGenerator { - public static final String NAME = "EntityWithExplicitQualifiersWithLegacySequenceGenerator"; - @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = NAME + "_generator") - @GenericGenerator(name = NAME + "_generator", strategy = "org.hibernate.id.SequenceGenerator", parameters = { - @Parameter(name = "sequence", value = NAME + "_seq"), - @Parameter(name = "catalog", value = EXPLICIT_CATALOG), - @Parameter(name = "schema", value = EXPLICIT_SCHEMA) - }) - private Long id; - @Basic - private String basic; - } - } diff --git a/hibernate-core/src/test/java/org/hibernate/test/id/sequence/SequenceExportTest.java b/hibernate-core/src/test/java/org/hibernate/test/id/sequence/SequenceExportTest.java index 36a56f1a6c..9ea11da77b 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/id/sequence/SequenceExportTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/id/sequence/SequenceExportTest.java @@ -40,9 +40,7 @@ public class SequenceExportTest extends BaseUnitTestCase { @Before public void prepare() { - ssr = new StandardServiceRegistryBuilder() - .applySetting( AvailableSettings.USE_NEW_ID_GENERATOR_MAPPINGS, "true" ) - .build(); + ssr = new StandardServiceRegistryBuilder().build(); } @After diff --git a/hibernate-envers/src/test/java/org/hibernate/orm/test/envers/AbstractOneSessionTest.java b/hibernate-envers/src/test/java/org/hibernate/orm/test/envers/AbstractOneSessionTest.java index 14c3a95150..d9a52a215c 100644 --- a/hibernate-envers/src/test/java/org/hibernate/orm/test/envers/AbstractOneSessionTest.java +++ b/hibernate-envers/src/test/java/org/hibernate/orm/test/envers/AbstractOneSessionTest.java @@ -48,7 +48,6 @@ public void init() throws URISyntaxException { if ( auditStrategy != null && !"".equals( auditStrategy ) ) { config.setProperty( EnversSettings.AUDIT_STRATEGY, auditStrategy ); } - config.setProperty( Environment.USE_NEW_ID_GENERATOR_MAPPINGS, "true" ); config.setProperty( EnversSettings.USE_REVISION_ENTITY_WITH_NATIVE_ID, "false" ); // These tests always use H2, so we reset the init_sql config here config.setProperty( "hibernate.connection.init_sql", "" ); diff --git a/hibernate-envers/src/test/java/org/hibernate/orm/test/envers/BaseEnversJPAFunctionalTestCase.java b/hibernate-envers/src/test/java/org/hibernate/orm/test/envers/BaseEnversJPAFunctionalTestCase.java index 3fdad3dea2..5284566061 100644 --- a/hibernate-envers/src/test/java/org/hibernate/orm/test/envers/BaseEnversJPAFunctionalTestCase.java +++ b/hibernate-envers/src/test/java/org/hibernate/orm/test/envers/BaseEnversJPAFunctionalTestCase.java @@ -124,7 +124,6 @@ private Map buildSettings() { settings.put( EnversSettings.USE_REVISION_ENTITY_WITH_NATIVE_ID, "false" ); - settings.put( AvailableSettings.USE_NEW_ID_GENERATOR_MAPPINGS, "true" ); settings.put( AvailableSettings.DIALECT, getDialect().getClass().getName() ); return settings; } diff --git a/hibernate-envers/src/test/java/org/hibernate/orm/test/envers/performance/AbstractEntityManagerTest.java b/hibernate-envers/src/test/java/org/hibernate/orm/test/envers/performance/AbstractEntityManagerTest.java index e7d16c790c..a4edf71e2f 100644 --- a/hibernate-envers/src/test/java/org/hibernate/orm/test/envers/performance/AbstractEntityManagerTest.java +++ b/hibernate-envers/src/test/java/org/hibernate/orm/test/envers/performance/AbstractEntityManagerTest.java @@ -85,7 +85,6 @@ protected void init(boolean audited, String auditStrategy) throws IOException { } if ( createSchema() ) { configurationProperties.setProperty( AvailableSettings.HBM2DDL_AUTO, "create-drop" ); - configurationProperties.setProperty( AvailableSettings.USE_NEW_ID_GENERATOR_MAPPINGS, "true" ); configurationProperties.setProperty( EnversSettings.USE_REVISION_ENTITY_WITH_NATIVE_ID, "false" ); } if ( auditStrategy != null && !"".equals( auditStrategy ) ) { diff --git a/hibernate-testing/src/main/java/org/hibernate/testing/junit4/BaseCoreFunctionalTestCase.java b/hibernate-testing/src/main/java/org/hibernate/testing/junit4/BaseCoreFunctionalTestCase.java index ef861bb46e..71bc37de18 100644 --- a/hibernate-testing/src/main/java/org/hibernate/testing/junit4/BaseCoreFunctionalTestCase.java +++ b/hibernate-testing/src/main/java/org/hibernate/testing/junit4/BaseCoreFunctionalTestCase.java @@ -180,7 +180,6 @@ private void afterConstructAndConfigureConfiguration(Configuration cfg) { protected Configuration constructConfiguration(BootstrapServiceRegistry bootstrapServiceRegistry) { Configuration configuration = new Configuration( bootstrapServiceRegistry ); configuration.setProperty( AvailableSettings.CACHE_REGION_FACTORY, CachingRegionFactory.class.getName() ); - configuration.setProperty( AvailableSettings.USE_NEW_ID_GENERATOR_MAPPINGS, "true" ); if ( createSchema() ) { configuration.setProperty( Environment.HBM2DDL_AUTO, "create-drop" ); final String secondSchemaName = createSecondSchema(); diff --git a/hibernate-testing/src/main/java/org/hibernate/testing/junit4/BaseNonConfigCoreFunctionalTestCase.java b/hibernate-testing/src/main/java/org/hibernate/testing/junit4/BaseNonConfigCoreFunctionalTestCase.java index c9e574c5d2..3961a76f36 100644 --- a/hibernate-testing/src/main/java/org/hibernate/testing/junit4/BaseNonConfigCoreFunctionalTestCase.java +++ b/hibernate-testing/src/main/java/org/hibernate/testing/junit4/BaseNonConfigCoreFunctionalTestCase.java @@ -218,7 +218,6 @@ private void initialize(StandardServiceRegistryBuilder ssrb) { final Dialect dialect = BaseCoreFunctionalTestCase.getDialect(); ssrb.applySetting( AvailableSettings.CACHE_REGION_FACTORY, CachingRegionFactory.class.getName() ); - ssrb.applySetting( AvailableSettings.USE_NEW_ID_GENERATOR_MAPPINGS, "true" ); if ( createSchema() ) { ssrb.applySetting( AvailableSettings.HBM2DDL_AUTO, "create-drop" ); final String secondSchemaName = createSecondSchema(); @@ -311,7 +310,6 @@ protected void afterMetadataSourcesApplied(MetadataSources metadataSources) { } protected void initialize(MetadataBuilder metadataBuilder) { - metadataBuilder.enableNewIdentifierGeneratorSupport( true ); metadataBuilder.applyImplicitNamingStrategy( ImplicitNamingStrategyLegacyJpaImpl.INSTANCE ); } diff --git a/hibernate-testing/src/main/java/org/hibernate/testing/orm/junit/EntityManagerFactoryBasedFunctionalTest.java b/hibernate-testing/src/main/java/org/hibernate/testing/orm/junit/EntityManagerFactoryBasedFunctionalTest.java index d1cf3b464b..80b5b54b3f 100644 --- a/hibernate-testing/src/main/java/org/hibernate/testing/orm/junit/EntityManagerFactoryBasedFunctionalTest.java +++ b/hibernate-testing/src/main/java/org/hibernate/testing/orm/junit/EntityManagerFactoryBasedFunctionalTest.java @@ -112,8 +112,6 @@ protected Map buildSettings() { settings.put( AvailableSettings.HBM2DDL_AUTO, "create-drop" ); } - settings.put( AvailableSettings.USE_NEW_ID_GENERATOR_MAPPINGS, "true" ); - return settings; }