diff --git a/hibernate-core/src/main/java/org/hibernate/boot/model/internal/BinderHelper.java b/hibernate-core/src/main/java/org/hibernate/boot/model/internal/BinderHelper.java index da05f57676eb..b53be48ead83 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/model/internal/BinderHelper.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/model/internal/BinderHelper.java @@ -33,7 +33,6 @@ import org.hibernate.boot.spi.MetadataBuildingContext; import org.hibernate.boot.spi.PropertyData; import org.hibernate.internal.log.DeprecationLogger; -import org.hibernate.internal.util.StringHelper; import org.hibernate.internal.util.collections.ArrayHelper; import org.hibernate.mapping.Any; import org.hibernate.mapping.AttributeContainer; @@ -882,9 +881,10 @@ static PropertyData getPropertyOverriddenByMapperOrMapsId( final ClassDetailsRegistry classDetailsRegistry = buildingContext.getMetadataCollector() .getSourceModelBuildingContext() .getClassDetailsRegistry(); - final String name = StringHelper.isEmpty( propertyHolder.getPersistentClass().getClassName() ) - ? propertyHolder.getPersistentClass().getEntityName() - : propertyHolder.getPersistentClass().getClassName(); + final PersistentClass persistentClass = propertyHolder.getPersistentClass(); + final String name = isEmpty( persistentClass.getClassName() ) + ? persistentClass.getEntityName() + : persistentClass.getClassName(); final ClassDetails classDetails = classDetailsRegistry.resolveClassDetails( name ); final InFlightMetadataCollector metadataCollector = buildingContext.getMetadataCollector(); if ( propertyHolder.isInIdClass() ) { diff --git a/hibernate-core/src/main/java/org/hibernate/id/IdentifierGenerator.java b/hibernate-core/src/main/java/org/hibernate/id/IdentifierGenerator.java index 513ccfd1e17d..7031e367792f 100644 --- a/hibernate-core/src/main/java/org/hibernate/id/IdentifierGenerator.java +++ b/hibernate-core/src/main/java/org/hibernate/id/IdentifierGenerator.java @@ -94,8 +94,11 @@ public interface IdentifierGenerator extends BeforeExecutionGenerator, Exportabl * @param parameters param values, keyed by parameter name * @param serviceRegistry Access to service that may be needed. * @throws MappingException If configuration fails. + * + * @deprecated since it overrides a deprecated method */ - @Override + @SuppressWarnings("removal") + @Override @Deprecated( since = "7.0", forRemoval = true ) default void configure(Type type, Properties parameters, ServiceRegistry serviceRegistry) {} /** diff --git a/hibernate-core/src/main/java/org/hibernate/mapping/Component.java b/hibernate-core/src/main/java/org/hibernate/mapping/Component.java index 1fcdbb8d2410..494f44f7e07e 100644 --- a/hibernate-core/src/main/java/org/hibernate/mapping/Component.java +++ b/hibernate-core/src/main/java/org/hibernate/mapping/Component.java @@ -79,7 +79,7 @@ public class Component extends SimpleValue implements MetaAttributable, Sortable private PersistentClass owner; private boolean dynamic; private boolean isKey; - private Boolean isGeneric; + private transient Boolean isGeneric; private String roleName; private MappedSuperclass mappedSuperclass; private Value discriminator; @@ -97,7 +97,7 @@ public class Component extends SimpleValue implements MetaAttributable, Sortable private String[] instantiatorPropertyNames; // cache the status of the type - private volatile CompositeType type; + private transient volatile CompositeType type; private AggregateColumn aggregateColumn; private AggregateColumn parentAggregateColumn; @@ -242,9 +242,7 @@ public List getAggregatedColumns() { private void collectAggregatedColumns(List aggregatedColumns, Component component) { for ( Property property : component.getProperties() ) { - final Value value = property.getValue(); - if ( value instanceof Component ) { - final Component subComponent = (Component) value; + if ( property.getValue() instanceof Component subComponent ) { final AggregateColumn subAggregate = subComponent.getAggregateColumn(); if ( subAggregate != null ) { aggregatedColumns.add( subAggregate ); @@ -254,7 +252,7 @@ private void collectAggregatedColumns(List aggregatedColumns, Component } } else { - aggregatedColumns.addAll( value.getColumns() ); + aggregatedColumns.addAll( property.getValue().getColumns() ); } } if ( component.isPolymorphic() ) { @@ -267,17 +265,16 @@ private void notifyPropertiesAboutAggregateColumn(AggregateColumn aggregateColum // Let the BasicValue of every sub-column know about the aggregate, // which is needed in type resolution final Value value = property.getValue(); - if ( value instanceof BasicValue ) { - assert ( (BasicValue) value ).getResolution() == null; - ( (BasicValue) value ).setAggregateColumn( aggregateColumn ); + if ( value instanceof BasicValue basicValue ) { + assert basicValue.getResolution() == null; + basicValue.setAggregateColumn( aggregateColumn ); } - else if ( value instanceof Component ) { - final Component subComponent = (Component) value; + else if ( value instanceof Component subComponent ) { if ( subComponent.getAggregateColumn() == null ) { subComponent.notifyPropertiesAboutAggregateColumn( aggregateColumn, subComponent ); } else { - ( (Component) value ).setParentAggregateColumn( aggregateColumn ); + subComponent.setParentAggregateColumn( aggregateColumn ); } } } @@ -678,11 +675,19 @@ private Generator buildIdentifierGenerator(Dialect dialect, RootClass rootClass) if ( !value.getCustomIdGeneratorCreator().isAssigned() ) { // skip any 'assigned' generators, they would have been // handled by the StandardGenerationContextLocator - generator.addGeneratedValuePlan( new ValueGenerationPlan( - value.createGenerator( dialect, rootClass, property ), - getType().isMutable() ? injector( property, getAttributeDeclarer( rootClass ) ) : null, - i - ) ); + if ( value.createGenerator( dialect, rootClass, property ) + instanceof BeforeExecutionGenerator beforeExecutionGenerator ) { + generator.addGeneratedValuePlan( new ValueGenerationPlan( + beforeExecutionGenerator, + getType().isMutable() + ? injector( property, getAttributeDeclarer( rootClass ) ) + : null, + i + ) ); + } + else { + throw new IdentifierGenerationException( "Identity generation isn't supported for composite ids" ); + } } } } @@ -755,12 +760,12 @@ public Object locateGenerationContext(SharedSessionContractImplementor session, } public static class ValueGenerationPlan implements CompositeNestedGeneratedValueGenerator.GenerationPlan { - private final Generator subgenerator; + private final BeforeExecutionGenerator generator; private final Setter injector; private final int propertyIndex; - public ValueGenerationPlan(Generator subgenerator, Setter injector, int propertyIndex) { - this.subgenerator = subgenerator; + public ValueGenerationPlan(BeforeExecutionGenerator generator, Setter injector, int propertyIndex) { + this.generator = generator; this.injector = injector; this.propertyIndex = propertyIndex; } @@ -777,9 +782,8 @@ public int getPropertyIndex() { @Override public Object execute(SharedSessionContractImplementor session, Object incomingObject) { - if ( !subgenerator.generatedOnExecution( incomingObject, session ) ) { - return ( (BeforeExecutionGenerator) subgenerator) - .generate( session, incomingObject, null, INSERT ); + if ( !generator.generatedOnExecution( incomingObject, session ) ) { + return generator.generate( session, incomingObject, null, INSERT ); } else { throw new IdentifierGenerationException( "Identity generation isn't supported for composite ids" ); @@ -788,15 +792,15 @@ public Object execute(SharedSessionContractImplementor session, Object incomingO @Override public void registerExportables(Database database) { - if ( subgenerator instanceof ExportableProducer ) { - ( (ExportableProducer) subgenerator).registerExportables( database ); + if ( generator instanceof ExportableProducer exportableProducer ) { + exportableProducer.registerExportables( database ); } } @Override public void initialize(SqlStringGenerationContext context) { - if ( subgenerator instanceof Configurable) { - ( (Configurable) subgenerator).initialize( context ); + if ( generator instanceof Configurable configurable ) { + configurable.initialize( context ); } } } @@ -949,7 +953,8 @@ public void setStructColumnNames(String[] structColumnNames) { public boolean isGeneric() { if ( isGeneric == null ) { - isGeneric = getComponentClassName() != null && getComponentClass().getTypeParameters().length != 0; + isGeneric = getComponentClassName() != null + && getComponentClass().getTypeParameters().length > 0; } return isGeneric; } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/mapping/internal/GeneratedValuesProcessor.java b/hibernate-core/src/main/java/org/hibernate/metamodel/mapping/internal/GeneratedValuesProcessor.java index ba30a468f36e..eed25fbe19bd 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/mapping/internal/GeneratedValuesProcessor.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/mapping/internal/GeneratedValuesProcessor.java @@ -30,7 +30,6 @@ import org.hibernate.sql.exec.spi.JdbcParametersList; import org.hibernate.sql.results.internal.RowTransformerArrayImpl; -import static org.hibernate.internal.util.NullnessUtil.castNonNull; import static org.hibernate.sql.results.spi.ListResultsConsumer.UniqueSemantic.FILTER; /** diff --git a/hibernate-core/src/main/java/org/hibernate/persister/entity/mutation/InsertCoordinatorStandard.java b/hibernate-core/src/main/java/org/hibernate/persister/entity/mutation/InsertCoordinatorStandard.java index 2a8b89ad0a5e..ddd8432d00a4 100644 --- a/hibernate-core/src/main/java/org/hibernate/persister/entity/mutation/InsertCoordinatorStandard.java +++ b/hibernate-core/src/main/java/org/hibernate/persister/entity/mutation/InsertCoordinatorStandard.java @@ -119,10 +119,10 @@ public GeneratedValues coordinateInsert( SharedSessionContractImplementor session) { // apply any pre-insert in-memory value generation final boolean needsDynamicInsert = preInsertInMemoryValueGeneration( values, entity, session ); - - final EntityMetamodel entityMetamodel = entityPersister().getEntityMetamodel(); - final boolean forceIdentifierBinding = entityPersister().getGenerator().generatedOnExecution() && id != null; - if ( entityMetamodel.isDynamicInsert() || needsDynamicInsert || forceIdentifierBinding ) { + final EntityPersister persister = entityPersister(); + final boolean forceIdentifierBinding = persister.getGenerator().generatedOnExecution() && id != null; + if ( persister.getEntityMetamodel().isDynamicInsert() + || needsDynamicInsert || forceIdentifierBinding ) { return doDynamicInserts( id, values, entity, session, forceIdentifierBinding ); } else { @@ -430,7 +430,7 @@ else if ( isValueGenerationInSql( generator, factory.getJdbcServices().getDialec if ( tableMapping.isIdentifierTable() && entityPersister().isIdentifierAssignedByInsert() && !forceIdentifierBinding ) { assert entityPersister().getInsertDelegate() != null; final OnExecutionGenerator generator = (OnExecutionGenerator) entityPersister().getGenerator(); - if ( generator.referenceColumnsInSql( dialect() ) ) { + if ( generator.referenceColumnsInSql( dialect ) ) { final BasicEntityIdentifierMapping identifierMapping = (BasicEntityIdentifierMapping) entityPersister().getIdentifierMapping(); final String[] columnValues = generator.getReferencedColumnValues( dialect ); tableMapping.getKeyMapping().forEachKeyColumn( (i, column) -> tableInsertBuilder.addKeyColumn( @@ -448,8 +448,8 @@ else if ( isValueGenerationInSql( generator, factory.getJdbcServices().getDialec private static boolean isValueGenerated(Generator generator) { return generator != null - && generator.generatesOnInsert() - && generator.generatedOnExecution(); + && generator.generatesOnInsert() + && generator.generatedOnExecution(); } private static boolean isValueGenerationInSql(Generator generator, Dialect dialect) { diff --git a/hibernate-core/src/main/java/org/hibernate/persister/entity/mutation/UpdateCoordinatorStandard.java b/hibernate-core/src/main/java/org/hibernate/persister/entity/mutation/UpdateCoordinatorStandard.java index 7e85862ef249..c538e9436cce 100644 --- a/hibernate-core/src/main/java/org/hibernate/persister/entity/mutation/UpdateCoordinatorStandard.java +++ b/hibernate-core/src/main/java/org/hibernate/persister/entity/mutation/UpdateCoordinatorStandard.java @@ -9,7 +9,6 @@ import java.util.Locale; import java.util.function.Supplier; -import org.hibernate.AssertionFailure; import org.hibernate.HibernateException; import org.hibernate.Internal; import org.hibernate.StaleObjectStateException; @@ -198,7 +197,6 @@ public GeneratedValues update( final boolean[] attributeUpdateability; boolean forceDynamicUpdate; - if ( entityPersister().getEntityMetamodel().isDynamicUpdate() && dirtyAttributeIndexes != null ) { attributeUpdateability = getPropertiesToUpdate( dirtyAttributeIndexes, hasDirtyCollection ); forceDynamicUpdate = true; @@ -372,21 +370,15 @@ private static boolean includedInLock( int position, SingularAttributeMapping attribute, EntityPersister persister) { - switch ( persister.optimisticLockStyle() ) { - case NONE: - return false; - case VERSION: - return versionMapping != null - && versionMapping.getVersionAttribute() == attribute; + return switch ( persister.optimisticLockStyle() ) { + case NONE -> false; + case VERSION -> versionMapping != null + && versionMapping.getVersionAttribute() == attribute; // && updateableAttributeIndexes[position]; - case ALL: - return attribute.getAttributeMetadata().isIncludedInOptimisticLocking(); - case DIRTY: - return attribute.getAttributeMetadata().isIncludedInOptimisticLocking() - && dirtinessChecker.include( position, attribute ); - default: - throw new AssertionFailure( "unknown OptimisticLockStyle" ); - } + case ALL -> attribute.getAttributeMetadata().isIncludedInOptimisticLocking(); + case DIRTY -> attribute.getAttributeMetadata().isIncludedInOptimisticLocking() + && dirtinessChecker.include( position, attribute ); + }; } protected Supplier handlePotentialImplicitForcedVersionIncrement( @@ -986,7 +978,7 @@ private MutationExecutor updateVersionExecutor( boolean dynamicUpdate, boolean batching) { if ( batching ) { - return updateVersionExecutor(session, group,dynamicUpdate); + return updateVersionExecutor( session, group, dynamicUpdate ); } return mutationExecutorService.createExecutor( NoBatchKeyAccess.INSTANCE, group, session ); @@ -1226,9 +1218,7 @@ private void applyAttributeUpdateDetails( TableUpdateBuilder tableUpdateBuilder, SharedSessionContractImplementor session) { final Generator generator = attributeMapping.getGenerator(); - if ( isValueGenerated( generator ) - && ( session == null && generator.generatedOnExecution() || generator.generatedOnExecution( entity, session ) ) - && isValueGenerationInSql( generator, dialect ) ) { + if ( needsValueGeneration( entity, session, generator ) ) { handleValueGeneration( attributeMapping, updateGroupBuilder, (OnExecutionGenerator) generator ); } else if ( versionMapping != null @@ -1245,6 +1235,12 @@ else if ( versionMapping != null } } + private boolean needsValueGeneration(Object entity, SharedSessionContractImplementor session, Generator generator) { + return isValueGenerated( generator ) + && (session == null && generator.generatedOnExecution() || generator.generatedOnExecution( entity, session ) ) + && isValueGenerationInSql( generator, dialect ); + } + /** * Contains the aggregated analysis of the update values to determine * what SQL UPDATE statement(s) should be used to update the entity @@ -1606,19 +1602,19 @@ private MutationOperationGroup buildStaticUpdateGroup() { null, null, null, - (index,attribute) -> isValueGenerated( attribute.getGenerator() ) && isValueGenerationInSql( attribute.getGenerator(), dialect() ) + (index,attribute) -> + isValueGenerated( attribute.getGenerator() ) + && isValueGenerationInSql( attribute.getGenerator(), dialect() ) || entityPersister().getPropertyUpdateability()[index], - (index,attribute) -> { - switch ( entityPersister().optimisticLockStyle() ) { - case ALL: - return true; - case VERSION: - final EntityVersionMapping versionMapping = entityPersister().getVersionMapping(); - return versionMapping != null && attribute == versionMapping.getVersionAttribute(); - default: - return false; - } - }, + (index,attribute) -> + switch ( entityPersister().optimisticLockStyle() ) { + case ALL -> true; + case VERSION -> { + final EntityVersionMapping versionMapping = entityPersister().getVersionMapping(); + yield versionMapping != null && attribute == versionMapping.getVersionAttribute(); + } + default -> false; + }, (index,attribute) -> true, "", // pass anything here to generate the row id restriction if possible false, diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/sql/BaseSqmToSqlAstConverter.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/sql/BaseSqmToSqlAstConverter.java index 4e3b5ac48aa4..470085600ffb 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/sql/BaseSqmToSqlAstConverter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/sql/BaseSqmToSqlAstConverter.java @@ -402,7 +402,6 @@ import org.hibernate.sql.results.graph.FetchParent; import org.hibernate.sql.results.graph.Fetchable; import org.hibernate.sql.results.graph.FetchableContainer; -import org.hibernate.sql.results.graph.collection.internal.EagerCollectionFetch; import org.hibernate.sql.results.graph.entity.EntityResultGraphNode; import org.hibernate.sql.results.graph.instantiation.internal.DynamicInstantiation; import org.hibernate.sql.results.graph.internal.ImmutableFetchList; diff --git a/hibernate-core/src/main/java/org/hibernate/type/MappingContext.java b/hibernate-core/src/main/java/org/hibernate/type/MappingContext.java index 82827b7091a1..6c6bb8ea2d84 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/MappingContext.java +++ b/hibernate-core/src/main/java/org/hibernate/type/MappingContext.java @@ -1,8 +1,6 @@ /* - * 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 . + * SPDX-License-Identifier: LGPL-2.1-or-later + * Copyright Red Hat Inc. and Hibernate Authors */ package org.hibernate.type; diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/annotations/cid/CompositeIdFkGeneratedValueIdentityTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/annotations/cid/CompositeIdFkGeneratedValueIdentityTest.java deleted file mode 100644 index da0ea1eeb199..000000000000 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/annotations/cid/CompositeIdFkGeneratedValueIdentityTest.java +++ /dev/null @@ -1,198 +0,0 @@ -/* - * SPDX-License-Identifier: LGPL-2.1-or-later - * Copyright Red Hat Inc. and Hibernate Authors - */ -package org.hibernate.orm.test.annotations.cid; - -import java.io.Serializable; -import java.util.Objects; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.IdClass; -import jakarta.persistence.ManyToOne; - -import org.hibernate.testing.orm.junit.JiraKey; -import org.hibernate.testing.orm.junit.DialectFeatureChecks; -import org.hibernate.testing.orm.junit.DomainModel; -import org.hibernate.testing.orm.junit.FailureExpected; -import org.hibernate.testing.orm.junit.RequiresDialectFeature; -import org.hibernate.testing.orm.junit.SessionFactory; -import org.hibernate.testing.orm.junit.SessionFactoryScope; -import org.junit.jupiter.api.Test; - -@JiraKey(value = "HHH-10956") -@RequiresDialectFeature(feature = DialectFeatureChecks.SupportsIdentityColumns.class) -@DomainModel( - annotatedClasses = { - CompositeIdFkGeneratedValueIdentityTest.HeadI.class, - CompositeIdFkGeneratedValueIdentityTest.NodeI.class, - CompositeIdFkGeneratedValueIdentityTest.ComplexNodeI.class - } -) -@SessionFactory -public class CompositeIdFkGeneratedValueIdentityTest { - - @Test - @FailureExpected(jiraKey = "HHH-9662", reason = "Could not set field value [POST_INSERT_INDICATOR]") - public void testCompositePkWithIdentityAndFKByIdentity(SessionFactoryScope scope) { - scope.inTransaction( session -> { - HeadI head = new HeadI(); - head.name = "Head by Identity"; - session.persist( head ); - System.out.println( "VALUE =>" + head.name + "=" + head.hid ); - - NodeI node = new NodeI(); - node.hid = head; - node.name = "Node by Identity"; - try { - session.persist( node ); - } - catch (Error | RuntimeException e) { - // expected failure... - e.printStackTrace( System.out ); - throw e; - } - System.out.println( "VALUE =>" + node.name + "=" + node.nid + ":" + node.hid.hid ); - } ); - } - - @Test - public void testCompositePkWithIdentityAndFKByIdentity2(SessionFactoryScope scope) { - scope.inTransaction( session -> { - HeadI head = new HeadI(); - head.name = "Head by Identity"; - session.persist( head ); - System.out.println( "VALUE =>" + head.name + "=" + head.hid ); - - ComplexNodeI node = new ComplexNodeI(); - node.hid = head; - node.name = "Node by Identity"; - session.persist( node ); - System.out.println( "VALUE =>" + node.name + "=" + node.nid + ":" + node.hid.hid + " with parent=" - + ( node.parent == null ? - null : - node.parent.nid + ":" + node.parent.hid.hid ) ); - - ComplexNodeI node2 = new ComplexNodeI(); - node2.hid = head; - node2.name = "Node 2 by Identity"; - node2.parent = node; - session.persist( node2 ); - System.out.println( "VALUE =>" + node2.name + "=" + node2.nid + ":" + node2.hid.hid + " with parent=" - + ( node2.parent == null ? - null : - node2.parent.nid + ":" + node2.parent.hid.hid ) ); - } ); - } - - @Entity(name = "HeadI") - public static class HeadI { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long hid; - - private String name; - } - - @Entity(name = "NodeI") - @IdClass(NodeI.PK.class) - public static class NodeI { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long nid; - - @Id - @ManyToOne - private HeadI hid; - - private String name; - - public static class PK implements Serializable { - - private Long nid; - - private Long hid; - - public PK(Long nid, Long hid) { - this.nid = nid; - this.hid = hid; - } - - private PK() { - } - - @Override - public boolean equals(Object o) { - if ( this == o ) { - return true; - } - if ( o == null || getClass() != o.getClass() ) { - return false; - } - PK pk = (PK) o; - return Objects.equals( nid, pk.nid ) && Objects.equals( hid, pk.hid ); - } - - @Override - public int hashCode() { - return Objects.hash( nid, hid ); - } - } - - } - - @Entity(name = "ComplexNodeI") - @IdClass(ComplexNodeI.PK.class) - public static class ComplexNodeI { - - @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE) - private Long nid; - - @Id - @ManyToOne - private HeadI hid; - - @ManyToOne - private ComplexNodeI parent; - - private String name; - - public static class PK implements Serializable { - - private Long nid; - - private Long hid; - - public PK(Long nid, Long hid) { - this.nid = nid; - this.hid = hid; - } - - private PK() { - } - - @Override - public boolean equals(Object o) { - if ( this == o ) { - return true; - } - if ( o == null || getClass() != o.getClass() ) { - return false; - } - PK pk = (PK) o; - return Objects.equals( nid, pk.nid ) && Objects.equals( hid, pk.hid ); - } - - @Override - public int hashCode() { - return Objects.hash( nid, hid ); - } - } - - } -} diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/annotations/cid/CompositeIdIdentityTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/annotations/cid/CompositeIdIdentityTest.java deleted file mode 100644 index 8f236b7bb161..000000000000 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/annotations/cid/CompositeIdIdentityTest.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * SPDX-License-Identifier: LGPL-2.1-or-later - * Copyright Red Hat Inc. and Hibernate Authors - */ -package org.hibernate.orm.test.annotations.cid; - -import java.io.Serializable; - -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.IdClass; -import jakarta.persistence.Table; - -import org.hibernate.testing.DialectChecks; -import org.hibernate.testing.FailureExpected; -import org.hibernate.testing.RequiresDialectFeature; -import org.hibernate.testing.orm.junit.JiraKey; -import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase; -import org.junit.Test; - -import static org.hibernate.testing.transaction.TransactionUtil.doInHibernate; - -/** - * @author Vlad Mihalcea - */ -@RequiresDialectFeature(DialectChecks.SupportsIdentityColumns.class) -@JiraKey( value = "HHH-9662" ) -public class CompositeIdIdentityTest extends BaseCoreFunctionalTestCase { - - @Test - @FailureExpected( jiraKey = "HHH-9662" ) - public void testCompositePkWithIdentity() throws Exception { - doInHibernate( this::sessionFactory, session -> { - Animal animal = new Animal(); - animal.setSubId( 123L ); - session.persist(animal); - } ); - } - - - @Override - protected Class[] getAnnotatedClasses() { - return new Class[] { - Animal.class - }; - } - - @Entity - @Table(name = "animal") - @IdClass(IdWithSubId.class) - public static class Animal { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @Id - @Column(name = "sub_id") - private Long subId; - - public Long getId() { - return id; - } - public void setId(Long id) { - this.id = id; - } - - public Long getSubId() { - return subId; - } - public void setSubId(Long subId) { - this.subId = subId; - } - } - - public static class IdWithSubId implements Serializable { - private Long id; - - private Long subId; - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public Long getSubId() { - return subId; - } - public void setSubId(Long subId) { - this.subId = subId; - } - - } -} diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/bytecode/enhancement/graph/LoadAndFetchGraphAssociationNotExplicitlySpecifiedTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/bytecode/enhancement/graph/LoadAndFetchGraphAssociationNotExplicitlySpecifiedTest.java index 63111a85e015..aeaec4b143e5 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/bytecode/enhancement/graph/LoadAndFetchGraphAssociationNotExplicitlySpecifiedTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/bytecode/enhancement/graph/LoadAndFetchGraphAssociationNotExplicitlySpecifiedTest.java @@ -1,3 +1,7 @@ +/* + * SPDX-License-Identifier: LGPL-2.1-or-later + * Copyright Red Hat Inc. and Hibernate Authors + */ package org.hibernate.orm.test.bytecode.enhancement.graph; import java.util.ArrayList; diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/bytecode/enhancement/graph/LoadAndFetchGraphCollectionsNotExplicitlySpecifiedTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/bytecode/enhancement/graph/LoadAndFetchGraphCollectionsNotExplicitlySpecifiedTest.java index 1c8acb026ab0..56dba4d00822 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/bytecode/enhancement/graph/LoadAndFetchGraphCollectionsNotExplicitlySpecifiedTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/bytecode/enhancement/graph/LoadAndFetchGraphCollectionsNotExplicitlySpecifiedTest.java @@ -1,3 +1,7 @@ +/* + * SPDX-License-Identifier: LGPL-2.1-or-later + * Copyright Red Hat Inc. and Hibernate Authors + */ package org.hibernate.orm.test.bytecode.enhancement.graph; import java.util.ArrayList; diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/entitygraph/FindGraphCollectionOrderByTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/entitygraph/FindGraphCollectionOrderByTest.java index 837f365223fd..06f24f403e66 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/entitygraph/FindGraphCollectionOrderByTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/entitygraph/FindGraphCollectionOrderByTest.java @@ -1,8 +1,6 @@ /* - * 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 http://www.gnu.org/licenses/lgpl-2.1.html + * SPDX-License-Identifier: LGPL-2.1-or-later + * Copyright Red Hat Inc. and Hibernate Authors */ package org.hibernate.orm.test.entitygraph; diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/idgen/userdefined/NativeGenerator.java b/hibernate-core/src/test/java/org/hibernate/orm/test/idgen/userdefined/NativeGenerator.java index 588b28627ecb..f99aebdd9347 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/idgen/userdefined/NativeGenerator.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/idgen/userdefined/NativeGenerator.java @@ -63,15 +63,15 @@ public void configure(GeneratorCreationContext creationContext, Properties param @Override public void registerExportables(Database database) { - if ( generator instanceof ExportableProducer ) { - ((ExportableProducer) generator).registerExportables(database); + if ( generator instanceof ExportableProducer exportableProducer ) { + exportableProducer.registerExportables(database); } } @Override public void initialize(SqlStringGenerationContext context) { - if ( generator instanceof Configurable ) { - ((Configurable) generator).initialize(context); + if ( generator instanceof Configurable configurable ) { + configurable.initialize(context); } } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/mapping/generated/GeneratedNoOpUpdateTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/mapping/generated/GeneratedNoOpUpdateTest.java index bdd8489b9676..0921f1689ad3 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/mapping/generated/GeneratedNoOpUpdateTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/mapping/generated/GeneratedNoOpUpdateTest.java @@ -1,8 +1,6 @@ /* - * 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 http://www.gnu.org/licenses/lgpl-2.1.html + * SPDX-License-Identifier: LGPL-2.1-or-later + * Copyright Red Hat Inc. and Hibernate Authors */ package org.hibernate.orm.test.mapping.generated; diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/querycache/QueryCacheNullValueTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/querycache/QueryCacheNullValueTest.java index a20b3e3a12b7..5e220fe7b88a 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/querycache/QueryCacheNullValueTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/querycache/QueryCacheNullValueTest.java @@ -1,8 +1,6 @@ /* - * 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 http://www.gnu.org/licenses/lgpl-2.1.html + * SPDX-License-Identifier: LGPL-2.1-or-later + * Copyright Red Hat Inc. and Hibernate Authors */ package org.hibernate.orm.test.querycache; diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/records/RecordEmbeddedPropertyNamesTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/records/RecordEmbeddedPropertyNamesTest.java index 62dbf9e3b4ec..cd84873c9473 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/records/RecordEmbeddedPropertyNamesTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/records/RecordEmbeddedPropertyNamesTest.java @@ -1,8 +1,6 @@ /* - * 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 http://www.gnu.org/licenses/lgpl-2.1.html + * SPDX-License-Identifier: LGPL-2.1-or-later + * Copyright Red Hat Inc. and Hibernate Authors */ package org.hibernate.orm.test.records;