mark some ancient hacks as deprecated

because apparently some users depend on them

also mark IdentifierGeneratorHelper as @Internal
This commit is contained in:
Gavin 2023-05-25 12:38:56 +02:00 committed by Gavin King
parent 4dc03a9c39
commit 6fd0ddfbec
3 changed files with 15 additions and 6 deletions

View File

@ -35,7 +35,7 @@ import static org.hibernate.spi.NavigablePath.IDENTIFIER_MAPPER_PROPERTY;
* *
* @deprecated This remains around as an implementation detail of {@code hbm.xml} mappings. * @deprecated This remains around as an implementation detail of {@code hbm.xml} mappings.
*/ */
@Deprecated(since = "6") @Deprecated(since = "6", forRemoval = true)
public class ForeignGenerator implements IdentifierGenerator, StandardGenerator { public class ForeignGenerator implements IdentifierGenerator, StandardGenerator {
private static final CoreMessageLogger LOG = messageLogger( ForeignGenerator.class ); private static final CoreMessageLogger LOG = messageLogger( ForeignGenerator.class );

View File

@ -7,6 +7,7 @@
package org.hibernate.id; package org.hibernate.id;
import org.hibernate.HibernateException; import org.hibernate.HibernateException;
import org.hibernate.Internal;
import org.hibernate.dialect.Dialect; import org.hibernate.dialect.Dialect;
import org.hibernate.internal.CoreLogging; import org.hibernate.internal.CoreLogging;
import org.hibernate.internal.CoreMessageLogger; import org.hibernate.internal.CoreMessageLogger;
@ -32,15 +33,19 @@ import java.util.Objects;
* @author Gavin King * @author Gavin King
* @author Steve Ebersole * @author Steve Ebersole
*/ */
@Internal
public final class IdentifierGeneratorHelper { public final class IdentifierGeneratorHelper {
private static final CoreMessageLogger LOG = CoreLogging.messageLogger( IdentifierGeneratorHelper.class ); private static final CoreMessageLogger LOG = CoreLogging.messageLogger( IdentifierGeneratorHelper.class );
/** /**
* Marker object returned from {@link IdentifierGenerator#generate} to indicate that we should * Marker object returned from {@link IdentifierGenerator#generate} to indicate that we should
* short-circuit any continued generated id checking. Currently, this is only used in the case of the * short-circuit any continued generated id checking. Currently, this is only used in the case of the
* {@linkplain ForeignGenerator foreign} generator as a way to signal that we should use the associated * {@linkplain ForeignGenerator foreign} generator as a way to signal that we should use the associated
* entity's id value. * entity's id value.
*
* @deprecated This is not an elegant way to do anything
*/ */
@Deprecated(forRemoval = true)
public static final Serializable SHORT_CIRCUIT_INDICATOR = new Serializable() { public static final Serializable SHORT_CIRCUIT_INDICATOR = new Serializable() {
@Override @Override
public String toString() { public String toString() {
@ -51,7 +56,10 @@ public final class IdentifierGeneratorHelper {
/** /**
* Marker object returned from {@link IdentifierGenerator#generate} to indicate that the entity's * Marker object returned from {@link IdentifierGenerator#generate} to indicate that the entity's
* identifier will be generated as part of the database insertion. * identifier will be generated as part of the database insertion.
*
* @deprecated Use a {@link org.hibernate.generator.OnExecutionGenerator}
*/ */
@Deprecated(forRemoval = true)
public static final Serializable POST_INSERT_INDICATOR = new Serializable() { public static final Serializable POST_INSERT_INDICATOR = new Serializable() {
@Override @Override
public String toString() { public String toString() {
@ -176,6 +184,7 @@ public final class IdentifierGeneratorHelper {
throw new IdentifierGenerationException( "Unknown IntegralDataTypeHolder impl [" + holder + "]" ); throw new IdentifierGenerationException( "Unknown IntegralDataTypeHolder impl [" + holder + "]" );
} }
@Internal
public static class BasicHolder implements IntegralDataTypeHolder { public static class BasicHolder implements IntegralDataTypeHolder {
private final Class<?> exactType; private final Class<?> exactType;
private long value = Long.MIN_VALUE; private long value = Long.MIN_VALUE;

View File

@ -16,7 +16,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors;
import org.hibernate.Internal; import org.hibernate.Internal;
import org.hibernate.MappingException; import org.hibernate.MappingException;
@ -32,6 +31,7 @@ import org.hibernate.dialect.Dialect;
import org.hibernate.engine.spi.Mapping; import org.hibernate.engine.spi.Mapping;
import org.hibernate.engine.spi.SharedSessionContractImplementor; import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.id.CompositeNestedGeneratedValueGenerator; import org.hibernate.id.CompositeNestedGeneratedValueGenerator;
import org.hibernate.id.IdentifierGenerationException;
import org.hibernate.id.IdentifierGenerator; import org.hibernate.id.IdentifierGenerator;
import org.hibernate.id.factory.IdentifierGeneratorFactory; import org.hibernate.id.factory.IdentifierGeneratorFactory;
import org.hibernate.internal.util.ReflectHelper; import org.hibernate.internal.util.ReflectHelper;
@ -48,7 +48,6 @@ import org.hibernate.type.EmbeddedComponentType;
import static java.util.stream.Collectors.toList; import static java.util.stream.Collectors.toList;
import static org.hibernate.generator.EventType.INSERT; import static org.hibernate.generator.EventType.INSERT;
import static org.hibernate.id.IdentifierGeneratorHelper.POST_INSERT_INDICATOR;
/** /**
* A mapping model object that represents an {@linkplain jakarta.persistence.Embeddable embeddable class}. * A mapping model object that represents an {@linkplain jakarta.persistence.Embeddable embeddable class}.
@ -659,11 +658,12 @@ public class Component extends SimpleValue implements MetaAttributable, Sortable
@Override @Override
public void execute(SharedSessionContractImplementor session, Object incomingObject, Object injectionContext) { public void execute(SharedSessionContractImplementor session, Object incomingObject, Object injectionContext) {
if ( !subgenerator.generatedOnExecution() ) { if ( !subgenerator.generatedOnExecution() ) {
Object generatedId = ( (BeforeExecutionGenerator) subgenerator).generate( session, incomingObject, null, INSERT ); final Object generatedId = ( (BeforeExecutionGenerator) subgenerator)
.generate( session, incomingObject, null, INSERT );
injector.set( injectionContext, generatedId ); injector.set( injectionContext, generatedId );
} }
else { else {
injector.set( injectionContext, POST_INSERT_INDICATOR ); throw new IdentifierGenerationException( "Identity generation isn't supported for composite ids" );
} }
} }