From 651c0c87d61f5fb42146dbf22348dba3e68ad66c Mon Sep 17 00:00:00 2001 From: Gavin King Date: Sun, 11 May 2025 19:37:48 +0200 Subject: [PATCH 1/9] HHH-19449 prepare --- .../metamodel/internal/AttributeFactory.java | 10 +-- .../SingularAttributeMetadataImpl.java | 16 ++-- .../internal/AnyDiscriminatorSqmPath.java | 1 + .../model/domain/internal/BasicTypeImpl.java | 6 +- .../EmbeddedDiscriminatorSqmPath.java | 6 +- .../EmbeddedDiscriminatorSqmPathSource.java | 3 +- .../internal/EntityDiscriminatorSqmPath.java | 18 ++-- .../hql/internal/SemanticQueryBuilder.java | 7 +- .../sqm/internal/SqmCriteriaNodeBuilder.java | 12 ++- .../query/sqm/internal/TypecheckUtil.java | 7 +- .../sqm/sql/BaseSqmToSqlAstConverter.java | 2 +- .../sqm/tree/SqmExpressibleAccessor.java | 2 +- .../query/sqm/tree/SqmTypedNode.java | 5 +- .../query/sqm/tree/cte/SqmCteTable.java | 21 ++--- .../sqm/tree/domain/AbstractSqmPath.java | 75 +++++++++-------- .../tree/domain/AbstractSqmPluralJoin.java | 3 +- .../tree/domain/AbstractSqmSimplePath.java | 5 +- .../tree/domain/SqmBasicValuedSimplePath.java | 11 +-- .../domain/SqmElementAggregateFunction.java | 8 +- .../sqm/tree/domain/SqmFunctionRoot.java | 4 +- .../domain/SqmIndexAggregateFunction.java | 8 +- .../query/sqm/tree/domain/SqmSetJoin.java | 3 +- .../SqmSingularPersistentAttribute.java | 5 +- .../internal/AnonymousTupleSqmPathSource.java | 4 + .../tuple/internal/AnonymousTupleType.java | 17 ++-- .../processor/annotation/AnnotationMeta.java | 84 +++++++++---------- .../processor/validation/Validation.java | 2 +- 27 files changed, 166 insertions(+), 179 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/AttributeFactory.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/AttributeFactory.java index 51251bf80256..164f3e54fc68 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/AttributeFactory.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/AttributeFactory.java @@ -237,13 +237,9 @@ public static DomainType determineSimpleType(ValueContext typeContext, Me private static EmbeddableDomainType embeddableDomainType(ValueContext typeContext, MetadataContext context) { final Component component = (Component) typeContext.getHibernateValue(); - if ( component.isDynamic() ) { - return dynamicEmbeddableType( context, component ); - } - else { - // we should have a non-dynamic embeddable - return classEmbeddableType( context, component ); - } + return component.isDynamic() + ? dynamicEmbeddableType( context, component ) + : classEmbeddableType( context, component ); // we should have a non-dynamic embeddable } private static EmbeddableDomainType classEmbeddableType(MetadataContext context, Component component) { diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/SingularAttributeMetadataImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/SingularAttributeMetadataImpl.java index 7515f3222ea2..987aa51d58d3 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/SingularAttributeMetadataImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/SingularAttributeMetadataImpl.java @@ -38,17 +38,11 @@ public Class getJpaBindableType() { @Override public ValueClassification getValueClassification() { - switch ( attributeClassification ) { - case EMBEDDED: { - return ValueClassification.EMBEDDABLE; - } - case BASIC: { - return ValueClassification.BASIC; - } - default: { - return ValueClassification.ENTITY; - } - } + return switch ( attributeClassification ) { + case EMBEDDED -> ValueClassification.EMBEDDABLE; + case BASIC -> ValueClassification.BASIC; + default -> ValueClassification.ENTITY; + }; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPath.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPath.java index 5f23139da585..968ca24e1d22 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPath.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPath.java @@ -44,5 +44,6 @@ public X accept(SemanticQueryWalker walker) { @Override public AnyDiscriminatorSqmPathSource getExpressible() { return (AnyDiscriminatorSqmPathSource) getNodeType(); +// return (AnyDiscriminatorSqmPathSource) super.getExpressible(); } } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicTypeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicTypeImpl.java index 16ad9d87a14d..f217e59f6726 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicTypeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicTypeImpl.java @@ -76,17 +76,17 @@ public J extract( } @Override - public JavaType getJavaTypeDescriptor() { + public JavaType getJavaTypeDescriptor() { throw new UnsupportedOperationException(); } @Override - public ValueExtractor getJdbcValueExtractor() { + public ValueExtractor getJdbcValueExtractor() { return jdbcType.getExtractor( javaType ); } @Override - public ValueBinder getJdbcValueBinder() { + public ValueBinder getJdbcValueBinder() { return jdbcType.getBinder( javaType ); } } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddedDiscriminatorSqmPath.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddedDiscriminatorSqmPath.java index 31ef610b8b82..c5738c87d7a8 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddedDiscriminatorSqmPath.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddedDiscriminatorSqmPath.java @@ -22,12 +22,11 @@ public class EmbeddedDiscriminatorSqmPath extends AbstractSqmPath implements DiscriminatorSqmPath { private final EmbeddableDomainType embeddableDomainType; - @SuppressWarnings( { "rawtypes", "unchecked" } ) protected EmbeddedDiscriminatorSqmPath( NavigablePath navigablePath, - SqmPathSource referencedPathSource, + SqmPathSource referencedPathSource, SqmPath lhs, - EmbeddableDomainType embeddableDomainType, + EmbeddableDomainType embeddableDomainType, NodeBuilder nodeBuilder) { super( navigablePath, referencedPathSource, lhs, nodeBuilder ); this.embeddableDomainType = embeddableDomainType; @@ -40,6 +39,7 @@ public EmbeddableDomainType getEmbeddableDomainType() { @Override public EmbeddedDiscriminatorSqmPathSource getExpressible() { return (EmbeddedDiscriminatorSqmPathSource) getNodeType(); +// return (EmbeddedDiscriminatorSqmPathSource) super.getExpressible(); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddedDiscriminatorSqmPathSource.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddedDiscriminatorSqmPathSource.java index 3c170a1949f5..fb8eae866988 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddedDiscriminatorSqmPathSource.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddedDiscriminatorSqmPathSource.java @@ -24,11 +24,12 @@ public EmbeddedDiscriminatorSqmPathSource(DomainType discriminatorType, Embed @Override public SqmPath createSqmPath(SqmPath lhs, SqmPathSource intermediatePathSource) { + //noinspection unchecked return new EmbeddedDiscriminatorSqmPath<>( PathHelper.append( lhs, this, intermediatePathSource ), pathModel, lhs, - embeddableDomainType, + (EmbeddableDomainType) embeddableDomainType, lhs.nodeBuilder() ); } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EntityDiscriminatorSqmPath.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EntityDiscriminatorSqmPath.java index f16a5d4065b4..c9575fbec201 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EntityDiscriminatorSqmPath.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EntityDiscriminatorSqmPath.java @@ -50,6 +50,7 @@ public EntityMappingType getEntityDescriptor() { @Override public EntityDiscriminatorSqmPathSource getExpressible() { return (EntityDiscriminatorSqmPathSource) getNodeType(); +// return (EntityDiscriminatorSqmPathSource) super.getExpressible(); } @Override @@ -58,18 +59,19 @@ public EntityDiscriminatorSqmPath copy(SqmCopyContext context) { if ( existing != null ) { return existing; } - return context.registerCopy( - this, - (EntityDiscriminatorSqmPath) getLhs().copy( context ).type() - ); + else { + return context.registerCopy( + this, + (EntityDiscriminatorSqmPath) getLhs().copy( context ).type() + ); + } } @Override public X accept(SemanticQueryWalker walker) { - if ( ! entityDescriptor.hasSubclasses() ) { - return walker.visitEntityTypeLiteralExpression( new SqmLiteralEntityType( entityDomainType, nodeBuilder() ) ); - } + return entityDescriptor.hasSubclasses() + ? walker.visitDiscriminatorPath( this ) + : walker.visitEntityTypeLiteralExpression( new SqmLiteralEntityType( entityDomainType, nodeBuilder() ) ); - return walker.visitDiscriminatorPath( this ); } } diff --git a/hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java b/hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java index 0c4d049935e8..38e82046e0a8 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java +++ b/hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java @@ -2550,10 +2550,11 @@ else if ( r instanceof AnyDiscriminatorSqmPath anyDiscriminatorPath && l inst private SqmExpression createDiscriminatorValue( AnyDiscriminatorSqmPath anyDiscriminatorTypeSqmPath, HqlParser.ExpressionContext valueExpressionContext) { + final var expressible = anyDiscriminatorTypeSqmPath.getExpressible(); return new SqmAnyDiscriminatorValue<>( - anyDiscriminatorTypeSqmPath.getNodeType().getPathName(), - creationContext.getJpaMetamodel().resolveHqlEntityReference( valueExpressionContext.getText() ), - anyDiscriminatorTypeSqmPath.getExpressible().getPathType(), + expressible.getPathName(), + getJpaMetamodel().resolveHqlEntityReference( valueExpressionContext.getText() ), + expressible.getPathType(), creationContext.getNodeBuilder() ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java index c1aaa19cf369..6a541534df68 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java @@ -2154,6 +2154,7 @@ private static SqmExpressible getNodeType(SqmExpression expression) { return sqmPath.getResolvedModel() instanceof SqmSingularPersistentAttribute attribute ? attribute.getSqmPathSource() : sqmPath.getResolvedModel(); +// : sqmPath.getExpressible(); } else { return expression.getNodeType(); @@ -2169,13 +2170,10 @@ private ValueBindJpaCriteriaParameter valueParameter(T value, SqmExpressi final T coercedValue = resolveExpressible( bindableType ).getExpressibleJavaType() .coerce(value, this::getTypeConfiguration ); - if ( isInstance( bindableType, coercedValue ) ) { - return new ValueBindJpaCriteriaParameter<>( bindableType, coercedValue, this ); - } - else { - // ignore typeInferenceSource and fall back the value type - return new ValueBindJpaCriteriaParameter<>( getParameterBindType( value ), value, this ); - } + return isInstance( bindableType, coercedValue ) + ? new ValueBindJpaCriteriaParameter<>( bindableType, coercedValue, this ) + // ignore typeInferenceSource and fall back the value type + : new ValueBindJpaCriteriaParameter<>( getParameterBindType( value ), value, this ); } private ValueBindJpaCriteriaParameter> collectionValueParameter(Collection value, SqmExpression elementTypeInferenceSource) { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java index 6ac0e4dcda78..a4e9882af533 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java @@ -18,7 +18,6 @@ import org.hibernate.query.SemanticException; import org.hibernate.query.sqm.BinaryArithmeticOperator; import org.hibernate.query.sqm.SqmExpressible; -import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.UnaryArithmeticOperator; import org.hibernate.query.sqm.tree.SqmTypedNode; import org.hibernate.query.sqm.tree.domain.SqmPath; @@ -101,7 +100,7 @@ public class TypecheckUtil { * @param lhsType the type of the expression on the LHS of the comparison operator * @param rhsType the type of the expression on the RHS of the comparison operator * - * @see #isTypeAssignable(SqmPathSource, SqmExpressible, BindingContext) + * @see #isTypeAssignable(SqmExpressible, SqmExpressible, BindingContext) */ public static boolean areTypesComparable( SqmExpressible lhsType, @@ -315,7 +314,7 @@ else if ( rhsType instanceof SqmExpressible rhsExpressible ) { * @see #areTypesComparable(SqmExpressible, SqmExpressible, BindingContext) */ private static boolean isTypeAssignable( - SqmPathSource targetType, SqmExpressible expressionType, + SqmExpressible targetType, SqmExpressible expressionType, BindingContext bindingContext) { if ( targetType == null || expressionType == null || targetType == expressionType ) { @@ -466,7 +465,7 @@ public static void assertAssignable( // TODO: check that the target path is nullable } else { - final SqmPathSource targetType = targetPath.getNodeType(); + final SqmExpressible targetType = targetPath.getNodeType(); final SqmExpressible expressionType = expression.getNodeType(); if ( targetType != null && expressionType != null && targetPath.isEnum() ) { // this is needed by Hibernate Processor due to the weird 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 a989ee267063..3020db208692 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 @@ -6598,7 +6598,7 @@ private Object transformDurationArithmetic(SqmBinaryArithmetic expression) { if ( type instanceof SqmExpressible sqmExpressible ) { adjustedTimestampType = sqmExpressible; } - else if (type instanceof ValueMapping valueMapping ) { + else if ( type instanceof ValueMapping valueMapping ) { adjustedTimestampType = (SqmExpressible) valueMapping.getMappedType(); } else { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmExpressibleAccessor.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmExpressibleAccessor.java index 83882f654109..95181ea4d73b 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmExpressibleAccessor.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmExpressibleAccessor.java @@ -18,7 +18,7 @@ public interface SqmExpressibleAccessor { */ default JavaType getNodeJavaType() { final SqmExpressible nodeType = getExpressible(); - return nodeType != null ? nodeType.getExpressibleJavaType() : null; + return nodeType == null ? null : nodeType.getExpressibleJavaType(); } SqmExpressible getExpressible(); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmTypedNode.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmTypedNode.java index 8c62e08c117f..2d2a26330e03 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmTypedNode.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmTypedNode.java @@ -10,8 +10,7 @@ import org.checkerframework.checker.nullness.qual.Nullable; /** - * Optional contract for SqmNode implementations which are - * typed + * Optional contract for {@link SqmNode} implementations which are typed. * * @author Steve Ebersole */ @@ -21,7 +20,7 @@ public interface SqmTypedNode extends SqmNode, SqmExpressibleAccessor, Sqm */ default @Nullable JavaType getNodeJavaType() { final SqmExpressible nodeType = getNodeType(); - return nodeType != null ? nodeType.getExpressibleJavaType() : null; + return nodeType == null ? null : nodeType.getExpressibleJavaType(); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTable.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTable.java index fd2240744cc5..cb8091f35855 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTable.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTable.java @@ -40,13 +40,7 @@ private SqmCteTable( this.cteStatement = cteStatement; final List columns = new ArrayList<>( componentCount() ); for ( int i = 0; i < componentCount(); i++ ) { - columns.add( - new SqmCteTableColumn( - this, - getComponentName( i ), - get( i ) - ) - ); + columns.add( new SqmCteTableColumn( this, getComponentName(i), get(i) ) ); } this.columns = columns; } @@ -97,11 +91,9 @@ public SqmCteStatement getCteStatement() { @Override public String getName() { - if ( Character.isDigit( name.charAt( 0 ) ) ) { - // Created through JPA criteria without an explicit name - return null; - } - return name; + return Character.isDigit( name.charAt( 0 ) ) + ? null // Created through JPA criteria without an explicit name + : name; } @Override @@ -118,10 +110,7 @@ public List getAttributes() { @Override public JpaCteCriteriaAttribute getAttribute(String name) { final Integer index = getIndex( name ); - if ( index == null ) { - return null; - } - return columns.get( index ); + return index == null ? null : columns.get( index ); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmPath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmPath.java index 0a1c37fd9e32..93c9f60cbaf4 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmPath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmPath.java @@ -6,14 +6,12 @@ import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; import org.hibernate.AssertionFailure; -import org.hibernate.internal.util.NullnessUtil; import org.hibernate.metamodel.mapping.CollectionPart; import org.hibernate.metamodel.mapping.EntityDiscriminatorMapping; import org.hibernate.metamodel.model.domain.EntityDomainType; @@ -34,6 +32,7 @@ import jakarta.persistence.metamodel.PluralAttribute; import jakarta.persistence.metamodel.SingularAttribute; +import static java.util.Collections.emptyList; import static org.hibernate.internal.util.NullnessUtil.castNonNull; /** @@ -41,6 +40,7 @@ */ public abstract class AbstractSqmPath extends AbstractSqmExpression implements SqmPath { private final NavigablePath navigablePath; + private final SqmPathSource referencedPathSource; private final SqmPath lhs; /** @@ -57,7 +57,9 @@ protected AbstractSqmPath( NodeBuilder nodeBuilder) { super( referencedPathSource, nodeBuilder ); this.navigablePath = navigablePath; + this.referencedPathSource = referencedPathSource; this.lhs = lhs; + assert super.getNodeType() == referencedPathSource; } protected void copyTo(AbstractSqmPath target, SqmCopyContext context) { @@ -69,7 +71,8 @@ protected void copyTo(AbstractSqmPath target, SqmCopyContext context) { private boolean navigablePathsMatch(AbstractSqmPath target) { final SqmPath lhs = getLhs() != null ? getLhs() : findRoot(); final SqmPath targetLhs = target.getLhs() != null ? target.getLhs() : target.findRoot(); - return lhs == null || lhs.getNavigablePath() == targetLhs.getNavigablePath() + return lhs == null + || lhs.getNavigablePath() == targetLhs.getNavigablePath() || getRoot( lhs ).getNodeType() instanceof SqmPolymorphicRootDescriptor; } @@ -79,12 +82,12 @@ private SqmPath getRoot(SqmPath lhs) { @Override public SqmPathSource getNodeType() { - return (SqmPathSource) NullnessUtil.castNonNull( super.getNodeType() ); + return referencedPathSource; } @Override public SqmPathSource getReferencedPathSource() { - return (SqmPathSource) NullnessUtil.castNonNull( super.getNodeType() ); + return referencedPathSource; } @Override @@ -99,11 +102,7 @@ public SqmPath getLhs() { @Override public List> getReusablePaths() { - if ( reusablePaths == null ) { - return Collections.emptyList(); - } - - return new ArrayList<>( reusablePaths.values() ); + return reusablePaths == null ? emptyList() : new ArrayList<>( reusablePaths.values() ); } @Override @@ -116,13 +115,10 @@ public void visitReusablePaths(Consumer> consumer) { @Override public void registerReusablePath(SqmPath path) { assert path.getLhs() == this; - if ( reusablePaths == null ) { reusablePaths = new HashMap<>(); } - final String relativeName = path.getNavigablePath().getLocalName(); - final SqmPath previous = reusablePaths.put( relativeName, path ); if ( previous != null && previous != path ) { throw new IllegalStateException( "Implicit-join path registration unexpectedly overrode previous registration - " + relativeName ); @@ -131,10 +127,7 @@ public void registerReusablePath(SqmPath path) { @Override public SqmPath getReusablePath(String name) { - if ( reusablePaths == null ) { - return null; - } - return reusablePaths.get( name ); + return reusablePaths == null ? null : reusablePaths.get( name ); } @Override @@ -171,11 +164,10 @@ public SqmExpressible getExpressible() { } @Override - @SuppressWarnings("unchecked") public SqmExpression> type() { final SqmPathSource referencedPathSource = getReferencedPathSource(); - final SqmPathSource subPathSource = referencedPathSource.findSubPathSource( EntityDiscriminatorMapping.DISCRIMINATOR_ROLE_NAME ); - + final SqmPathSource subPathSource = + referencedPathSource.findSubPathSource( EntityDiscriminatorMapping.DISCRIMINATOR_ROLE_NAME ); if ( subPathSource == null ) { return new SqmLiteral<>( referencedPathSource.getBindableJavaType(), @@ -183,19 +175,23 @@ public SqmExpression> type() { nodeBuilder() ); } - return (SqmExpression>) resolvePath( EntityDiscriminatorMapping.DISCRIMINATOR_ROLE_NAME, subPathSource ); + else { + @SuppressWarnings("unchecked") + final var discriminatorSource = (SqmPathSource>) subPathSource; + return resolvePath( EntityDiscriminatorMapping.DISCRIMINATOR_ROLE_NAME, discriminatorSource ); + } } @Override public SqmPath get(String attributeName) { - //noinspection unchecked + @SuppressWarnings("unchecked") final SqmPathSource subNavigable = (SqmPathSource) getResolvedModel().getSubPathSource( attributeName ); return resolvePath( attributeName, subNavigable ); } @Override public SqmPath get(String attributeName, boolean includeSubtypes) { - //noinspection unchecked + @SuppressWarnings("unchecked") final SqmPathSource subPathSource = (SqmPathSource) getResolvedModel().getSubPathSource( attributeName, includeSubtypes ); return resolvePath( attributeName, subPathSource ); @@ -207,38 +203,45 @@ protected SqmPath resolvePath(PersistentAttribute attribute) { } protected SqmPath resolvePath(String attributeName, SqmPathSource pathSource) { + final SqmPathSource intermediatePathSource = + getResolvedModel().getIntermediatePathSource( pathSource ); if ( reusablePaths == null ) { reusablePaths = new HashMap<>(); - final SqmPath path = pathSource.createSqmPath( this, getResolvedModel().getIntermediatePathSource( pathSource ) ); + final SqmPath path = pathSource.createSqmPath( this, intermediatePathSource ); reusablePaths.put( attributeName, path ); return path; } else { //noinspection unchecked - return (SqmPath) reusablePaths.computeIfAbsent( - attributeName, - name -> pathSource.createSqmPath( this, getResolvedModel().getIntermediatePathSource( pathSource ) ) - ); + return (SqmPath) + reusablePaths.computeIfAbsent( attributeName, + name -> pathSource.createSqmPath( this, intermediatePathSource ) ); } } protected SqmTreatedPath getTreatedPath(ManagedDomainType treatTarget) { final NavigablePath treat = getNavigablePath().treatAs( treatTarget.getTypeName() ); - //noinspection unchecked - SqmTreatedPath path = (SqmTreatedPath) getLhs().getReusablePath( treat.getLocalName() ); + final SqmPath reusablePath = getLhs().getReusablePath( treat.getLocalName() ); + //TODO: check this cast + @SuppressWarnings("unchecked") + final SqmTreatedPath path = (SqmTreatedPath) reusablePath; if ( path == null ) { + final SqmTreatedPath treatedPath; if ( treatTarget instanceof SqmEntityDomainType entityDomainType ) { - path = new SqmTreatedEntityValuedSimplePath<>( this, entityDomainType, nodeBuilder() ); + treatedPath = new SqmTreatedEntityValuedSimplePath<>( this, entityDomainType, nodeBuilder() ); } else if ( treatTarget instanceof SqmEmbeddableDomainType embeddableDomainType ) { - path = new SqmTreatedEmbeddedValuedSimplePath<>( this, embeddableDomainType ); + treatedPath = new SqmTreatedEmbeddedValuedSimplePath<>( this, embeddableDomainType ); } else { throw new AssertionFailure( "Unrecognized treat target type: " + treatTarget.getTypeName() ); } - getLhs().registerReusablePath( path ); + getLhs().registerReusablePath( treatedPath ); + return treatedPath; + } + else { + return path; } - return path; } @Override @@ -290,12 +293,12 @@ private NavigablePath getRealParentPath(NavigablePath realParent, NavigablePath if ( parent == realParent ) { return null; } - else if ( realParent instanceof EntityIdentifierNavigablePath ) { + else if ( realParent instanceof EntityIdentifierNavigablePath entityIdentifierNavigablePath ) { parent = getRealParentPath( castNonNull( realParent.getRealParent() ), parent ); if ( parent != null ) { parent = new EntityIdentifierNavigablePath( parent, - ( (EntityIdentifierNavigablePath) realParent ).getIdentifierAttributeName() + entityIdentifierNavigablePath.getIdentifierAttributeName() ); } } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmPluralJoin.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmPluralJoin.java index e8f8501b6014..8e91c74eac06 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmPluralJoin.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmPluralJoin.java @@ -58,6 +58,7 @@ protected AbstractSqmPluralJoin( @Override public SqmPluralPersistentAttribute getModel() { - return (SqmPluralPersistentAttribute) super.getNodeType(); +// return (SqmPluralPersistentAttribute) super.getNodeType(); + return (SqmPluralPersistentAttribute) super.getModel(); } } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmSimplePath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmSimplePath.java index 2fcda0050a96..afe8d85e66ad 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmSimplePath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmSimplePath.java @@ -29,7 +29,6 @@ public AbstractSqmSimplePath( String explicitAlias, NodeBuilder nodeBuilder) { super( navigablePath, referencedPathSource, lhs, nodeBuilder ); - setExplicitAlias( explicitAlias ); } @@ -49,7 +48,7 @@ public SqmPathSource getNodeType() { @Override public SqmPathSource getReferencedPathSource() { - final SqmPathSource pathSource = super.getNodeType(); + final SqmPathSource pathSource = super.getReferencedPathSource(); return pathSource instanceof SqmSingularPersistentAttribute attribute ? attribute.getSqmPathSource() : pathSource; @@ -57,6 +56,6 @@ public SqmPathSource getReferencedPathSource() { @Override public SqmPathSource getModel() { - return super.getNodeType(); + return super.getReferencedPathSource(); } } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java index 2e637bef58d9..3c5dc2124075 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java @@ -114,6 +114,7 @@ public SqmPath resolveIndexedAccess( getIndexFunction( selector, getNodeType().getPathType(), +// getReferencedPathSource().getPathType(), creationState.getCreationContext().getQueryEngine() ) ); @@ -156,16 +157,6 @@ private Class getJavaTypeClass(SqmDomainType sqmPathType) { // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // SqmPath - @Override - public SqmPathSource getReferencedPathSource() { - return super.getReferencedPathSource(); - } - - @Override - public SqmPathSource getNodeType() { - return getReferencedPathSource(); - } - @Override public BasicJavaType getJavaTypeDescriptor() { return (BasicJavaType) super.getJavaTypeDescriptor(); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmElementAggregateFunction.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmElementAggregateFunction.java index 143b5856c617..15274236b1bd 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmElementAggregateFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmElementAggregateFunction.java @@ -62,12 +62,16 @@ public SqmElementAggregateFunction(SqmPath pluralDomainPath, String functionN @Override public SqmExpressible getExpressible() { - return returnableType == null ? super.getExpressible() : nodeBuilder().resolveExpressible( returnableType ); + return returnableType == null + ? super.getExpressible() + : nodeBuilder().resolveExpressible( returnableType ); } @Override public JavaType getJavaTypeDescriptor() { - return returnableType == null ? super.getJavaTypeDescriptor() : returnableType.getExpressibleJavaType(); + return returnableType == null + ? super.getJavaTypeDescriptor() + : returnableType.getExpressibleJavaType(); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmFunctionRoot.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmFunctionRoot.java index 3bc7b2f28a90..bff05b22fbbc 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmFunctionRoot.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmFunctionRoot.java @@ -76,8 +76,10 @@ public SqmSetReturningFunction getFunction() { @Override public SqmPath index() { + final SqmPathSource pathSource = + function.getType().getSubPathSource( CollectionPart.Nature.INDEX.getName() ); //noinspection unchecked - final SqmPathSource indexPathSource = (SqmPathSource) function.getType().getSubPathSource( CollectionPart.Nature.INDEX.getName() ); + final SqmPathSource indexPathSource = (SqmPathSource) pathSource; return resolvePath( indexPathSource.getPathName(), indexPathSource ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmIndexAggregateFunction.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmIndexAggregateFunction.java index aff9823324cb..5656faae1f07 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmIndexAggregateFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmIndexAggregateFunction.java @@ -66,12 +66,16 @@ public SqmIndexAggregateFunction(SqmPath pluralDomainPath, String functionNam @Override public SqmExpressible getExpressible() { - return returnableType == null ? super.getExpressible() : nodeBuilder().resolveExpressible( returnableType ); + return returnableType == null + ? super.getExpressible() + : nodeBuilder().resolveExpressible( returnableType ); } @Override public JavaType getJavaTypeDescriptor() { - return returnableType == null ? super.getJavaTypeDescriptor() : returnableType.getExpressibleJavaType(); + return returnableType == null + ? super.getJavaTypeDescriptor() + : returnableType.getExpressibleJavaType(); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmSetJoin.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmSetJoin.java index 4ed9b37a9cf7..76bcc7707d89 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmSetJoin.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmSetJoin.java @@ -73,7 +73,8 @@ public SqmSetJoin copy(SqmCopyContext context) { @Override public SqmSetPersistentAttribute getModel() { - return (SqmSetPersistentAttribute) super.getNodeType(); +// return (SqmSetPersistentAttribute) super.getNodeType(); + return (SqmSetPersistentAttribute) super.getModel(); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmSingularPersistentAttribute.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmSingularPersistentAttribute.java index 114d05bfb2a7..b68e87c1dcd0 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmSingularPersistentAttribute.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmSingularPersistentAttribute.java @@ -6,11 +6,12 @@ import org.hibernate.Incubating; import org.hibernate.metamodel.model.domain.SingularPersistentAttribute; -import org.hibernate.query.sqm.SqmJoinable; import org.hibernate.query.sqm.SqmPathSource; +import org.hibernate.query.sqm.SqmJoinable; @Incubating public interface SqmSingularPersistentAttribute - extends SingularPersistentAttribute, SqmPersistentAttribute, SqmJoinable, SqmPathSource { + extends SingularPersistentAttribute, SqmPersistentAttribute, + SqmJoinable, SqmPathSource { SqmPathSource getSqmPathSource(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleSqmPathSource.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleSqmPathSource.java index 81dd063769c3..b3485cb42283 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleSqmPathSource.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleSqmPathSource.java @@ -44,11 +44,13 @@ public String getPathName() { @Override public SqmDomainType getPathType() { return path.getNodeType().getPathType(); +// return (SqmDomainType) path.getReferencedPathSource().getPathType(); } @Override public BindableType getBindableType() { return path.getNodeType().getBindableType(); +// return path.getReferencedPathSource().getBindableType(); } @Override @@ -59,11 +61,13 @@ public JavaType getExpressibleJavaType() { @Override public SqmPathSource findSubPathSource(String name) { return path.getNodeType().findSubPathSource( name ); +// return path.getReferencedPathSource().findSubPathSource( name ); } @Override public SqmPath createSqmPath(SqmPath lhs, SqmPathSource intermediatePathSource) { final DomainType domainType = path.getNodeType().getPathType(); +// final DomainType domainType = path.getReferencedPathSource().getPathType(); if ( domainType instanceof BasicDomainType ) { return new SqmBasicValuedSimplePath<>( PathHelper.append( lhs, this, intermediatePathSource ), diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java index 169f80464548..5cfd9c3b7989 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java @@ -16,14 +16,14 @@ import org.hibernate.metamodel.mapping.SqlTypedMapping; import org.hibernate.metamodel.mapping.internal.SqlTypedMappingImpl; import org.hibernate.metamodel.model.domain.SimpleDomainType; +import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.domain.SqmDomainType; +import org.hibernate.query.sqm.tree.domain.SqmPluralPersistentAttribute; import org.hibernate.query.sqm.tuple.TupleType; import org.hibernate.metamodel.model.domain.ReturnableType; import org.hibernate.query.SemanticException; import org.hibernate.query.sqm.SqmExpressible; -import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.domain.SqmPath; -import org.hibernate.query.sqm.tree.domain.SqmPluralPersistentAttribute; import org.hibernate.query.sqm.tree.select.SqmSelectClause; import org.hibernate.query.sqm.tree.select.SqmSelectableNode; import org.hibernate.query.sqm.tree.select.SqmSubQuery; @@ -43,7 +43,8 @@ * @author Christian Beikov */ @Incubating -public class AnonymousTupleType implements TupleType, SqmDomainType, ReturnableType, SqmPathSource { +public class AnonymousTupleType + implements TupleType, SqmDomainType, ReturnableType, SqmPathSource { private final JavaType javaTypeDescriptor; private final @Nullable NavigablePath[] componentSourcePaths; @@ -137,12 +138,10 @@ public static SqlTypedMapping[] toSqlTypedMappings(List sqlSelecti final SqlTypedMapping[] jdbcMappings = new SqlTypedMapping[sqlSelections.size()]; for ( int i = 0; i < sqlSelections.size(); i++ ) { final JdbcMappingContainer expressionType = sqlSelections.get( i ).getExpressionType(); - if ( expressionType instanceof SqlTypedMapping sqlTypedMapping ) { - jdbcMappings[i] = sqlTypedMapping; - } - else { - jdbcMappings[i] = new SqlTypedMappingImpl( expressionType.getSingleJdbcMapping() ); - } + jdbcMappings[i] = + expressionType instanceof SqlTypedMapping sqlTypedMapping + ? sqlTypedMapping + : new SqlTypedMappingImpl( expressionType.getSingleJdbcMapping() ); } return jdbcMappings; } diff --git a/tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/AnnotationMeta.java b/tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/AnnotationMeta.java index c838d704e0db..9bfc470b415b 100644 --- a/tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/AnnotationMeta.java +++ b/tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/AnnotationMeta.java @@ -91,49 +91,47 @@ private void handleNamedQuery(AnnotationMirror mirror, boolean checkHql) { final Context context = getContext(); final boolean reportErrors = context.checkNamedQuery( name ); final AnnotationValue value = getAnnotationValue( mirror, "query" ); - if ( value != null ) { - if ( value.getValue() instanceof String hql ) { - final SqmStatement statement = - Validation.validate( - hql, - null, - true, - // If we are in the scope of @CheckHQL, semantic errors in the - // query result in compilation errors. Otherwise, they only - // result in warnings, so we don't break working code. - new WarningErrorHandler( context, getElement(), mirror, value, hql, - reportErrors, checkHql ), - ProcessorSessionFactory.create( context.getProcessingEnvironment(), - context.getEntityNameMappings(), context.getEnumTypesByValue(), - context.isIndexing() ) - ); - if ( !isJakartaDataStyle() - && statement instanceof SqmSelectStatement selectStatement ) { - if ( isQueryMethodName( name ) ) { - final AnnotationValue annotationValue = getAnnotationValue( mirror, "resultClass" ); - final String resultType = annotationValue != null - ? annotationValue.getValue().toString() - : resultType( selectStatement ); - putMember( name, - new NamedQueryMethod( - this, - selectStatement, - name.substring(1), - isRepository(), - getSessionType(), - getSessionVariableName(), - context.addNonnullAnnotation(), - resultType - ) - ); - } - if ( getAnnotationValue( mirror, "resultClass" ) == null ) { - final String resultType = resultType( selectStatement ); - if ( resultType != null ) { - putMember( "QUERY_" + name, - new TypedMetaAttribute( this, name, "QUERY_", resultType, - TYPED_QUERY_REFERENCE, hql ) ); - } + if ( value != null && value.getValue() instanceof String hql ) { + final SqmStatement statement = + Validation.validate( + hql, + null, + true, + // If we are in the scope of @CheckHQL, semantic errors in the + // query result in compilation errors. Otherwise, they only + // result in warnings, so we don't break working code. + new WarningErrorHandler( context, getElement(), mirror, value, hql, + reportErrors, checkHql ), + ProcessorSessionFactory.create( context.getProcessingEnvironment(), + context.getEntityNameMappings(), context.getEnumTypesByValue(), + context.isIndexing() ) + ); + if ( !isJakartaDataStyle() + && statement instanceof SqmSelectStatement selectStatement ) { + if ( isQueryMethodName( name ) ) { + final AnnotationValue annotationValue = getAnnotationValue( mirror, "resultClass" ); + final String resultType = annotationValue != null + ? annotationValue.getValue().toString() + : resultType( selectStatement ); + putMember( name, + new NamedQueryMethod( + this, + selectStatement, + name.substring( 1 ), + isRepository(), + getSessionType(), + getSessionVariableName(), + context.addNonnullAnnotation(), + resultType + ) + ); + } + if ( getAnnotationValue( mirror, "resultClass" ) == null ) { + final String resultType = resultType( selectStatement ); + if ( resultType != null ) { + putMember( "QUERY_" + name, + new TypedMetaAttribute( this, name, "QUERY_", resultType, + TYPED_QUERY_REFERENCE, hql ) ); } } } diff --git a/tooling/metamodel-generator/src/main/java/org/hibernate/processor/validation/Validation.java b/tooling/metamodel-generator/src/main/java/org/hibernate/processor/validation/Validation.java index e46d4e73cf2d..c733ea364b34 100644 --- a/tooling/metamodel-generator/src/main/java/org/hibernate/processor/validation/Validation.java +++ b/tooling/metamodel-generator/src/main/java/org/hibernate/processor/validation/Validation.java @@ -71,7 +71,7 @@ public interface Handler extends ANTLRErrorListener { } } catch (Exception e) { -// e.printStackTrace(); + e.printStackTrace(); } return null; } From d36edacd5e4f1aa66ecf94d6bbab058fd088287a Mon Sep 17 00:00:00 2001 From: Gavin King Date: Sun, 11 May 2025 20:30:40 +0200 Subject: [PATCH 2/9] HHH-19449 simplify solution to HHH-17405 seems we can just use getExpressible() which already calls getResolvedModel() --- .../internal/SingularAttributeImpl.java | 6 ++ .../sqm/internal/SqmCriteriaNodeBuilder.java | 56 ++++++++++--------- .../query/sqm/tree/domain/SqmPath.java | 2 - 3 files changed, 35 insertions(+), 29 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/SingularAttributeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/SingularAttributeImpl.java index cda01decbf0b..1ef248f6ecf4 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/SingularAttributeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/SingularAttributeImpl.java @@ -17,6 +17,7 @@ import org.hibernate.metamodel.model.domain.SimpleDomainType; import org.hibernate.query.SemanticException; import org.hibernate.query.sqm.NodeBuilder; +import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.internal.SqmMappingModelHelper; @@ -138,6 +139,11 @@ public SqmPathSource getSqmPathSource() { return sqmPathSource; } + @Override + public SqmExpressible getExpressible() { + return sqmPathSource; + } + @Override public boolean isGeneric() { return sqmPathSource.isGeneric(); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java index 6a541534df68..b67c1b368063 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java @@ -106,7 +106,6 @@ import org.hibernate.query.sqm.tree.domain.SqmPluralValuedSimplePath; import org.hibernate.query.sqm.tree.domain.SqmSetJoin; import org.hibernate.query.sqm.tree.domain.SqmSingularJoin; -import org.hibernate.query.sqm.tree.domain.SqmSingularPersistentAttribute; import org.hibernate.query.sqm.tree.domain.SqmTreatedRoot; import org.hibernate.query.sqm.tree.domain.SqmTreatedSingularJoin; import org.hibernate.query.sqm.tree.expression.*; @@ -2095,7 +2094,11 @@ public SqmExpression value(T value, SqmExpression typeInfere //noinspection unchecked return (SqmExpression) value; } - return inlineValue( value ) ? literal( value, typeInferenceSource ) : valueParameter( value, typeInferenceSource ); + else { + return inlineValue( value ) + ? literal( value, typeInferenceSource ) + : valueParameter( value, typeInferenceSource ); + } } private SqmExpression> collectionValue(Collection value, SqmExpression typeInferenceSource) { @@ -2120,7 +2123,7 @@ else if ( value instanceof SqmExpression ) { } } - private boolean isInstance(BindableType bindableType, T value) { + private boolean isInstance(BindableType bindableType, T value) { if ( bindableType instanceof SqmExpressible expressible ) { return expressible.getExpressibleJavaType().isInstance( value ); } @@ -2130,50 +2133,49 @@ private boolean isInstance(BindableType bindableType, T value) { } } - @SuppressWarnings("unchecked") - private static BindableType resolveInferredParameterType( - T value, - SqmExpression typeInferenceSource, + private static BindableType resolveInferredParameterType( + X value, + SqmExpression typeInferenceSource, TypeConfiguration typeConfiguration) { if ( typeInferenceSource != null ) { if ( typeInferenceSource instanceof BindableType ) { + //noinspection unchecked return (BindableType) typeInferenceSource; } - final SqmExpressible nodeType = getNodeType( typeInferenceSource ); + final SqmExpressible nodeType = typeInferenceSource.getExpressible(); if ( nodeType != null ) { - return (BindableType) nodeType; + return nodeType; } } - return value == null ? null : (BasicType) typeConfiguration.getBasicTypeForJavaType( value.getClass() ); - } - - private static SqmExpressible getNodeType(SqmExpression expression) { - if ( expression instanceof SqmPath sqmPath ) { - return sqmPath.getResolvedModel() instanceof SqmSingularPersistentAttribute attribute - ? attribute.getSqmPathSource() - : sqmPath.getResolvedModel(); -// : sqmPath.getExpressible(); + if ( value == null ) { + return null; } else { - return expression.getNodeType(); + @SuppressWarnings("unchecked") // this is completely safe + final Class valueClass = (Class) value.getClass(); + return typeConfiguration.getBasicTypeForJavaType( valueClass ); } } private ValueBindJpaCriteriaParameter valueParameter(T value, SqmExpression typeInferenceSource) { - final BindableType bindableType = - resolveInferredParameterType( value, typeInferenceSource, getTypeConfiguration() ); + final var bindableType = resolveInferredParameterType( value, typeInferenceSource, getTypeConfiguration() ); if ( bindableType == null || isInstance( bindableType, value) ) { - return new ValueBindJpaCriteriaParameter<>( bindableType, value, this ); + @SuppressWarnings("unchecked") // safe, we just checked + final var widerType = (BindableType) bindableType; + return new ValueBindJpaCriteriaParameter<>( widerType, value, this ); } final T coercedValue = resolveExpressible( bindableType ).getExpressibleJavaType() - .coerce(value, this::getTypeConfiguration ); - return isInstance( bindableType, coercedValue ) - ? new ValueBindJpaCriteriaParameter<>( bindableType, coercedValue, this ) - // ignore typeInferenceSource and fall back the value type - : new ValueBindJpaCriteriaParameter<>( getParameterBindType( value ), value, this ); + .coerce( value, this::getTypeConfiguration ); + // ignore typeInferenceSource and fall back the value type + if ( isInstance( bindableType, coercedValue ) ) { + @SuppressWarnings("unchecked") // safe, we just checked + final var widerType = (BindableType) bindableType; + return new ValueBindJpaCriteriaParameter<>( widerType, coercedValue, this ); + } + return new ValueBindJpaCriteriaParameter<>( getParameterBindType( value ), value, this ); } private ValueBindJpaCriteriaParameter> collectionValueParameter(Collection value, SqmExpression elementTypeInferenceSource) { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmPath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmPath.java index 91fc9dd1179f..463bcfdaa171 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmPath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmPath.java @@ -170,6 +170,4 @@ default SqmPath get(String attributeName, boolean includeSubtypes) { @Override SqmPath copy(SqmCopyContext context); - - } From 13f1cfcf9ad77e2c57c359dd4fbabdd30908fd8f Mon Sep 17 00:00:00 2001 From: Gavin King Date: Mon, 12 May 2025 00:37:24 +0200 Subject: [PATCH 3/9] HHH-19449 SqmExpressible should not extend BindableType --- ...eriesSetReturningFunctionTypeResolver.java | 3 +- ...nnestSetReturningFunctionTypeResolver.java | 13 +++-- .../array/ArrayConstructorFunction.java | 6 +- .../mapping/DiscriminatorConverter.java | 12 ++-- .../internal/AnyDiscriminatorSqmPath.java | 4 +- .../AnyDiscriminatorSqmPathSource.java | 3 +- .../model/domain/internal/ArrayTupleType.java | 9 +-- .../domain/internal/BasicSqmPathSource.java | 9 ++- .../domain/internal/EmbeddableTypeImpl.java | 18 +++--- .../EmbeddedDiscriminatorSqmPath.java | 4 +- .../internal/EntityDiscriminatorSqmPath.java | 4 +- .../internal/SingularAttributeImpl.java | 6 +- .../persister/entity/DiscriminatorHelper.java | 8 +-- .../procedure/internal/ProcedureCallImpl.java | 14 +++-- .../FullyQualifiedReflectivePathTerminal.java | 8 +-- .../hql/internal/SemanticQueryBuilder.java | 5 +- .../hibernate/query/internal/QueryHelper.java | 10 ++-- .../query/spi/BindableTypeImplementor.java | 3 +- .../hibernate/query/spi/BindingContext.java | 14 ++--- .../spi/QueryParameterBindingValidator.java | 4 +- .../org/hibernate/query/sqm/SqmBindable.java | 20 +++++++ .../hibernate/query/sqm/SqmExpressible.java | 9 +-- .../hibernate/query/sqm/SqmPathSource.java | 2 +- .../function/SelfRenderingSqmFunction.java | 10 ++-- .../sqm/internal/SqmCriteriaNodeBuilder.java | 22 +++---- .../query/sqm/internal/TypecheckUtil.java | 25 ++++---- .../SelectableMappingExpressionConverter.java | 4 +- ...tReturningFunctionTypeResolverBuilder.java | 12 ++-- .../sqm/sql/BaseSqmToSqlAstConverter.java | 13 +++-- .../sqm/tree/SqmExpressibleAccessor.java | 3 +- .../query/sqm/tree/SqmTypedNode.java | 6 +- .../query/sqm/tree/cte/SqmCteTable.java | 6 +- .../query/sqm/tree/cte/SqmCteTableColumn.java | 5 +- .../sqm/tree/domain/AbstractSqmPath.java | 14 ++--- .../tree/domain/AbstractSqmSimplePath.java | 5 +- .../tree/domain/SqmBasicValuedSimplePath.java | 10 ++-- .../query/sqm/tree/domain/SqmDomainType.java | 6 +- .../domain/SqmElementAggregateFunction.java | 4 +- .../tree/domain/SqmEmbeddableDomainType.java | 6 ++ .../domain/SqmEmbeddedValuedSimplePath.java | 6 +- .../domain/SqmEntityValuedSimplePath.java | 6 +- .../sqm/tree/domain/SqmFunctionPath.java | 6 +- .../domain/SqmIndexAggregateFunction.java | 4 +- .../sqm/tree/domain/SqmMapEntryReference.java | 6 +- .../query/sqm/tree/domain/SqmPath.java | 6 +- .../sqm/tree/domain/SqmSingularJoin.java | 5 +- .../sqm/tree/domain/SqmTreatedBagJoin.java | 3 +- .../sqm/tree/domain/SqmTreatedCrossJoin.java | 5 +- .../SqmTreatedEmbeddedValuedSimplePath.java | 3 +- .../sqm/tree/domain/SqmTreatedEntityJoin.java | 4 +- .../sqm/tree/domain/SqmTreatedListJoin.java | 3 +- .../sqm/tree/domain/SqmTreatedMapJoin.java | 3 +- .../tree/domain/SqmTreatedPluralPartJoin.java | 3 +- .../query/sqm/tree/domain/SqmTreatedRoot.java | 4 +- .../sqm/tree/domain/SqmTreatedSetJoin.java | 3 +- .../sqm/tree/domain/SqmTreatedSimplePath.java | 3 +- .../tree/domain/SqmTreatedSingularJoin.java | 3 +- .../expression/AbstractSqmExpression.java | 8 +-- .../tree/expression/AbstractSqmParameter.java | 7 ++- .../expression/AsWrapperSqmExpression.java | 4 +- .../tree/expression/JpaCriteriaParameter.java | 3 +- .../tree/expression/NullSqmExpressible.java | 4 +- .../tree/expression/SqmAliasedNodeRef.java | 6 +- .../query/sqm/tree/expression/SqmAny.java | 4 +- .../tree/expression/SqmBinaryArithmetic.java | 8 +-- .../query/sqm/tree/expression/SqmByUnit.java | 4 +- .../sqm/tree/expression/SqmCaseSearched.java | 14 ++--- .../sqm/tree/expression/SqmCaseSimple.java | 14 ++--- .../sqm/tree/expression/SqmCastTarget.java | 4 +- .../sqm/tree/expression/SqmCoalesce.java | 6 +- .../sqm/tree/expression/SqmCollation.java | 4 +- .../tree/expression/SqmCollectionSize.java | 4 +- .../sqm/tree/expression/SqmDistinct.java | 4 +- .../sqm/tree/expression/SqmDurationUnit.java | 4 +- .../sqm/tree/expression/SqmEnumLiteral.java | 6 +- .../query/sqm/tree/expression/SqmEvery.java | 4 +- .../sqm/tree/expression/SqmExpression.java | 7 ++- .../tree/expression/SqmExpressionHelper.java | 10 ++-- .../sqm/tree/expression/SqmExtractUnit.java | 4 +- .../sqm/tree/expression/SqmFieldLiteral.java | 10 ++-- .../query/sqm/tree/expression/SqmFormat.java | 4 +- .../sqm/tree/expression/SqmFunction.java | 4 +- .../tree/expression/SqmJsonNullBehavior.java | 4 +- .../SqmJsonObjectAggUniqueKeysBehavior.java | 4 +- .../tree/expression/SqmJsonTableFunction.java | 5 +- .../query/sqm/tree/expression/SqmLiteral.java | 6 +- .../expression/SqmLiteralEmbeddableType.java | 4 +- .../tree/expression/SqmLiteralEntityType.java | 4 +- .../sqm/tree/expression/SqmLiteralNull.java | 8 +-- .../SqmModifiedSubQueryExpression.java | 4 +- .../tree/expression/SqmNamedParameter.java | 4 +- .../query/sqm/tree/expression/SqmOver.java | 4 +- .../SqmParameterizedEntityType.java | 6 +- .../expression/SqmPositionalParameter.java | 4 +- .../SqmSelfRenderingExpression.java | 4 +- .../tree/expression/SqmTrimSpecification.java | 4 +- .../query/sqm/tree/expression/SqmTuple.java | 6 +- .../tree/expression/SqmUnaryOperation.java | 4 +- .../SqmXmlAttributesExpression.java | 4 +- .../tree/expression/SqmXmlTableFunction.java | 5 +- .../ValueBindJpaCriteriaParameter.java | 6 +- .../sqm/tree/jpa/AbstractJpaSelection.java | 4 +- .../sqm/tree/jpa/AbstractJpaTupleElement.java | 12 ++-- .../sqm/tree/jpa/ParameterCollector.java | 8 +-- .../AbstractNegatableSqmPredicate.java | 4 +- .../tree/predicate/AbstractSqmPredicate.java | 4 +- .../tree/predicate/SqmBetweenPredicate.java | 4 +- .../predicate/SqmComparisonPredicate.java | 4 +- .../predicate/SqmInSubQueryPredicate.java | 4 +- .../tree/predicate/SqmJunctionPredicate.java | 4 +- .../sqm/tree/predicate/SqmLikePredicate.java | 4 +- .../tree/predicate/SqmMemberOfPredicate.java | 4 +- .../query/sqm/tree/select/SqmAliasedNode.java | 6 +- .../tree/select/SqmDynamicInstantiation.java | 3 +- .../select/SqmDynamicInstantiationTarget.java | 4 +- .../tree/select/SqmJpaCompoundSelection.java | 6 +- .../query/sqm/tree/select/SqmSubQuery.java | 12 ++-- .../hibernate/query/sqm/tuple/TupleType.java | 5 +- .../internal/AnonymousTupleSqmPathSource.java | 16 ++--- .../tuple/internal/AnonymousTupleType.java | 22 ++++--- .../hibernate/type/BasicTypeReference.java | 4 +- ...ustomMutabilityConvertedBasicTypeImpl.java | 6 ++ .../hibernate/type/spi/TypeConfiguration.java | 11 ++-- .../DynamicParameterizedTypeTest.java | 5 +- .../orm/test/hql/ASTParserLoadingTest.java | 4 +- .../basic/TimeZoneColumnDurationTest.java | 58 +++++++++++++++++++ .../processor/validation/Validation.java | 2 +- 127 files changed, 497 insertions(+), 379 deletions(-) create mode 100644 hibernate-core/src/main/java/org/hibernate/query/sqm/SqmBindable.java create mode 100644 hibernate-core/src/test/java/org/hibernate/orm/test/mapping/basic/TimeZoneColumnDurationTest.java diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/GenerateSeriesSetReturningFunctionTypeResolver.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/GenerateSeriesSetReturningFunctionTypeResolver.java index 2629869f013e..e168d6944c20 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/GenerateSeriesSetReturningFunctionTypeResolver.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/GenerateSeriesSetReturningFunctionTypeResolver.java @@ -13,6 +13,7 @@ import org.hibernate.metamodel.mapping.SelectablePath; import org.hibernate.metamodel.mapping.SqlTypedMapping; import org.hibernate.metamodel.mapping.internal.SelectableMappingImpl; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.domain.SqmDomainType; import org.hibernate.query.sqm.tuple.internal.AnonymousTupleType; import org.hibernate.query.sqm.SqmExpressible; @@ -53,7 +54,7 @@ public AnonymousTupleType resolveTupleType(List> ar throw new IllegalArgumentException( "Couldn't determine types of arguments to function 'generate_series'" ); } - final SqmExpressible[] componentTypes = new SqmExpressible[]{ type, typeConfiguration.getBasicTypeForJavaType( Long.class ) }; + final SqmBindable[] componentTypes = new SqmBindable[]{ type, typeConfiguration.getBasicTypeForJavaType( Long.class ) }; final String[] componentNames = new String[]{ CollectionPart.Nature.ELEMENT.getName(), CollectionPart.Nature.INDEX.getName() }; return new AnonymousTupleType<>( componentTypes, componentNames ); } diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/UnnestSetReturningFunctionTypeResolver.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/UnnestSetReturningFunctionTypeResolver.java index 938fb45fda77..56f7f5af4904 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/UnnestSetReturningFunctionTypeResolver.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/UnnestSetReturningFunctionTypeResolver.java @@ -17,6 +17,7 @@ import org.hibernate.metamodel.mapping.SelectablePath; import org.hibernate.metamodel.mapping.SqlTypedMapping; import org.hibernate.metamodel.mapping.internal.SelectableMappingImpl; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tuple.internal.AnonymousTupleType; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.produce.function.SetReturningFunctionTypeResolver; @@ -55,7 +56,7 @@ public AnonymousTupleType resolveTupleType(List> ar } final BasicType elementType = pluralType.getElementType(); - final SqmExpressible[] componentTypes; + final SqmBindable[] componentTypes; final String[] componentNames; if ( elementType.getJdbcType() instanceof AggregateJdbcType aggregateJdbcType && aggregateJdbcType.getEmbeddableMappingType() != null ) { @@ -75,7 +76,7 @@ public AnonymousTupleType resolveTupleType(List> ar componentNames[index] = CollectionPart.Nature.INDEX.getName(); } else { - componentTypes = new SqmExpressible[]{ elementType, typeConfiguration.getBasicTypeForJavaType( Long.class ) }; + componentTypes = new SqmBindable[]{ elementType, typeConfiguration.getBasicTypeForJavaType( Long.class ) }; componentNames = new String[]{ CollectionPart.Nature.ELEMENT.getName(), CollectionPart.Nature.INDEX.getName() }; } return new AnonymousTupleType<>( componentTypes, componentNames ); @@ -208,17 +209,17 @@ public SelectableMapping[] resolveFunctionReturnType( return returnType; } - private static SqmExpressible[] determineComponentTypes(EmbeddableMappingType embeddableMappingType) { + private static SqmBindable[] determineComponentTypes(EmbeddableMappingType embeddableMappingType) { final int numberOfAttributeMappings = embeddableMappingType.getNumberOfAttributeMappings(); - final ArrayList> expressibles = new ArrayList<>( numberOfAttributeMappings + 1 ); + final ArrayList> expressibles = new ArrayList<>( numberOfAttributeMappings + 1 ); for ( int i = 0; i < numberOfAttributeMappings; i++ ) { final AttributeMapping attributeMapping = embeddableMappingType.getAttributeMapping( i ); final MappingType mappedType = attributeMapping.getMappedType(); - if ( mappedType instanceof SqmExpressible sqmExpressible ) { + if ( mappedType instanceof SqmBindable sqmExpressible ) { expressibles.add( sqmExpressible ); } } - return expressibles.toArray( new SqmExpressible[expressibles.size() + 1] ); + return expressibles.toArray( new SqmBindable[expressibles.size() + 1] ); } } diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayConstructorFunction.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayConstructorFunction.java index b0470654e56f..ef90bb13b314 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayConstructorFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayConstructorFunction.java @@ -9,7 +9,7 @@ import org.hibernate.metamodel.mapping.JdbcMappingContainer; import org.hibernate.metamodel.model.domain.ReturnableType; import org.hibernate.query.spi.BindingContext; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.function.AbstractSqmSelfRenderingFunctionDescriptor; import org.hibernate.query.sqm.produce.function.ArgumentsValidator; import org.hibernate.query.sqm.produce.function.FunctionArgumentException; @@ -77,9 +77,9 @@ public void validate( String functionName, BindingContext bindingContext) { final int size = arguments.size(); - SqmExpressible firstType = null; + SqmBindable firstType = null; for ( int i = 0; i < size; i++ ) { - final SqmExpressible argument = arguments.get( i ).getExpressible(); + final SqmBindable argument = arguments.get( i ).getExpressible(); if ( firstType == null ) { firstType = argument; } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/mapping/DiscriminatorConverter.java b/hibernate-core/src/main/java/org/hibernate/metamodel/mapping/DiscriminatorConverter.java index 089a00922c3a..160a12abce60 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/mapping/DiscriminatorConverter.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/mapping/DiscriminatorConverter.java @@ -66,18 +66,18 @@ public O toDomainValue(R relationalForm) { @Override public R toRelationalValue(O domainForm) { - assert domainForm == null || domainForm instanceof String || domainForm instanceof Class; - + final String entityName; if ( domainForm == null ) { return null; } - - final String entityName; - if ( domainForm instanceof Class clazz ) { + else if ( domainForm instanceof Class clazz ) { entityName = clazz.getName(); } + else if ( domainForm instanceof String name ) { + entityName = name; + } else { - entityName = (String) domainForm; + throw new IllegalArgumentException( "Illegal discriminator value: " + domainForm ); } final DiscriminatorValueDetails discriminatorValueDetails = getDetailsForEntityName( entityName ); diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPath.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPath.java index 968ca24e1d22..10f9e2864344 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPath.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPath.java @@ -43,7 +43,7 @@ public X accept(SemanticQueryWalker walker) { @Override public AnyDiscriminatorSqmPathSource getExpressible() { - return (AnyDiscriminatorSqmPathSource) getNodeType(); -// return (AnyDiscriminatorSqmPathSource) super.getExpressible(); +// return (AnyDiscriminatorSqmPathSource) getNodeType(); + return (AnyDiscriminatorSqmPathSource) getReferencedPathSource(); } } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPathSource.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPathSource.java index fb997c741f33..702d8443f002 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPathSource.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPathSource.java @@ -7,6 +7,7 @@ import org.hibernate.annotations.AnyDiscriminator; import org.hibernate.metamodel.model.domain.SimpleDomainType; import org.hibernate.metamodel.model.domain.ReturnableType; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.domain.SqmPath; import org.hibernate.spi.NavigablePath; @@ -18,7 +19,7 @@ * */ public class AnyDiscriminatorSqmPathSource extends AbstractSqmPathSource - implements ReturnableType { + implements ReturnableType, SqmBindable { private final BasicType domainType; diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java index 02540972789c..44e9bb6a68a5 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java @@ -13,6 +13,7 @@ import org.hibernate.metamodel.UnsupportedMappingException; import org.hibernate.metamodel.mapping.JdbcMapping; import org.hibernate.metamodel.mapping.MappingModelExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.domain.SqmDomainType; import org.hibernate.query.sqm.tuple.TupleType; import org.hibernate.metamodel.model.domain.ReturnableType; @@ -28,9 +29,9 @@ public class ArrayTupleType implements TupleType, MappingModelExpressible { private final ObjectArrayJavaType javaType; - private final SqmExpressible[] components; + private final SqmBindable[] components; - public ArrayTupleType(SqmExpressible[] components) { + public ArrayTupleType(SqmBindable[] components) { this.components = components; this.javaType = new ObjectArrayJavaType( getTypeDescriptors( components ) ); } @@ -69,12 +70,12 @@ public List getComponentNames() { } @Override - public SqmExpressible get(int index) { + public SqmBindable get(int index) { return components[index]; } @Override - public SqmExpressible get(String componentName) { + public SqmBindable get(String componentName) { throw new UnsupportedMappingException( "Array tuple has no component names" ); } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicSqmPathSource.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicSqmPathSource.java index 3c74fdcc13c5..7ad0a116a93c 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicSqmPathSource.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicSqmPathSource.java @@ -10,7 +10,6 @@ import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.domain.SqmBasicValuedSimplePath; import org.hibernate.query.sqm.tree.domain.SqmPath; -import org.hibernate.query.sqm.tree.domain.SqmDomainType; import org.hibernate.type.descriptor.java.JavaType; /** @@ -39,10 +38,10 @@ public String getTypeName() { return super.getTypeName(); } - @Override - public SqmDomainType getSqmType() { - return getPathType(); - } +// @Override +// public SqmDomainType getSqmType() { +// return getPathType(); +// } @Override public SqmPathSource findSubPathSource(String name) { diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddableTypeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddableTypeImpl.java index 7c56da50dffc..c55f1f613841 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddableTypeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddableTypeImpl.java @@ -68,15 +68,15 @@ public String getPathName() { return getTypeName(); } - @Override - public SqmEmbeddableDomainType getPathType() { - return this; - } - - @Override - public SqmEmbeddableDomainType getSqmType() { - return SqmEmbeddableDomainType.super.getSqmType(); - } +// @Override +// public SqmEmbeddableDomainType getPathType() { +// return this; +// } + +// @Override +// public SqmEmbeddableDomainType getSqmType() { +// return this; +// } @Override public SqmPathSource findSubPathSource(String name) { diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddedDiscriminatorSqmPath.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddedDiscriminatorSqmPath.java index c5738c87d7a8..1d6854d8a425 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddedDiscriminatorSqmPath.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddedDiscriminatorSqmPath.java @@ -38,8 +38,8 @@ public EmbeddableDomainType getEmbeddableDomainType() { @Override public EmbeddedDiscriminatorSqmPathSource getExpressible() { - return (EmbeddedDiscriminatorSqmPathSource) getNodeType(); -// return (EmbeddedDiscriminatorSqmPathSource) super.getExpressible(); +// return (EmbeddedDiscriminatorSqmPathSource) getNodeType(); + return (EmbeddedDiscriminatorSqmPathSource) getReferencedPathSource(); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EntityDiscriminatorSqmPath.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EntityDiscriminatorSqmPath.java index c9575fbec201..03ecdf2ad667 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EntityDiscriminatorSqmPath.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EntityDiscriminatorSqmPath.java @@ -49,8 +49,8 @@ public EntityMappingType getEntityDescriptor() { @Override public EntityDiscriminatorSqmPathSource getExpressible() { - return (EntityDiscriminatorSqmPathSource) getNodeType(); -// return (EntityDiscriminatorSqmPathSource) super.getExpressible(); +// return (EntityDiscriminatorSqmPathSource) getNodeType(); + return (EntityDiscriminatorSqmPathSource) getReferencedPathSource(); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/SingularAttributeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/SingularAttributeImpl.java index 1ef248f6ecf4..957f9334085e 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/SingularAttributeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/SingularAttributeImpl.java @@ -17,7 +17,7 @@ import org.hibernate.metamodel.model.domain.SimpleDomainType; import org.hibernate.query.SemanticException; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.internal.SqmMappingModelHelper; @@ -140,8 +140,8 @@ public SqmPathSource getSqmPathSource() { } @Override - public SqmExpressible getExpressible() { - return sqmPathSource; + public SqmBindable getExpressible() { + return sqmPathSource.getExpressible(); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/persister/entity/DiscriminatorHelper.java b/hibernate-core/src/main/java/org/hibernate/persister/entity/DiscriminatorHelper.java index d13c476a4737..e38ea7f590cf 100644 --- a/hibernate-core/src/main/java/org/hibernate/persister/entity/DiscriminatorHelper.java +++ b/hibernate-core/src/main/java/org/hibernate/persister/entity/DiscriminatorHelper.java @@ -11,7 +11,7 @@ import org.hibernate.mapping.Component; import org.hibernate.mapping.PersistentClass; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.sql.InFragment; import org.hibernate.type.BasicType; @@ -117,13 +117,13 @@ public static String jdbcLiteral(T value, JdbcLiteralFormatter formatter, * either the {@link org.hibernate.metamodel.mapping.DiscriminatorType}, for polymorphic * domain types, or to {@link StandardBasicTypes#CLASS Class} for non-inherited ones. */ - public static SqmExpressible getDiscriminatorType( + public static SqmBindable getDiscriminatorType( SqmPathSource domainType, NodeBuilder nodeBuilder) { final SqmPathSource subPathSource = domainType.findSubPathSource( DISCRIMINATOR_ROLE_NAME ); - final SqmExpressible type = subPathSource != null + final SqmBindable type = subPathSource != null ? subPathSource.getPathType() : nodeBuilder.getTypeConfiguration().getBasicTypeRegistry().resolve( StandardBasicTypes.CLASS ); //noinspection unchecked - return (SqmExpressible) type; + return (SqmBindable) type; } } diff --git a/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureCallImpl.java b/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureCallImpl.java index feb6c906078f..bb5e1b99a865 100644 --- a/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureCallImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureCallImpl.java @@ -45,6 +45,7 @@ import org.hibernate.query.KeyedPage; import org.hibernate.query.KeyedResultList; import org.hibernate.query.sqm.NodeBuilder; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.type.OutputableType; import org.hibernate.query.Query; import org.hibernate.query.QueryParameter; @@ -380,8 +381,7 @@ public ProcedureCall markAsFunctionCall(BindableType typeReference) { throw new IllegalArgumentException( "Given type is not an OutputableType: " + typeReference ); } if ( resultSetMapping.getNumberOfResultBuilders() == 0 ) { - final SqmExpressible expressible = - getSessionFactory().getRuntimeMetamodels().resolveExpressible( typeReference ); + final SqmExpressible expressible = resolveExpressible( typeReference ); // Function returns might not be represented as callable parameters, // but we still want to convert the result to the requested java type if possible resultSetMapping.addResultBuilder( new ScalarDomainResultBuilder<>( expressible.getExpressibleJavaType() ) ); @@ -499,14 +499,17 @@ public ProcedureParameter registerParameter( int position, BindableType typeReference, ParameterMode mode) { - final SqmExpressible expressible = - getSessionFactory().getRuntimeMetamodels().resolveExpressible( typeReference ); + final SqmBindable expressible = resolveExpressible( typeReference ); final ProcedureParameterImpl procedureParameter = new ProcedureParameterImpl<>( position, mode, typeReference.getBindableJavaType(), expressible ); registerParameter( procedureParameter ); return procedureParameter; } + private SqmBindable resolveExpressible(BindableType typeReference) { + return getSessionFactory().getRuntimeMetamodels().resolveExpressible( typeReference ); + } + private void registerParameter(ProcedureParameterImplementor parameter) { getParameterMetadata().registerParameter( parameter ); } @@ -546,8 +549,7 @@ public ProcedureParameterImplementor registerParameter( String name, BindableType typeReference, ParameterMode mode) { - final SqmExpressible expressible = - getSessionFactory().getRuntimeMetamodels().resolveExpressible( typeReference ); + final SqmBindable expressible = resolveExpressible( typeReference ); final ProcedureParameterImpl parameter = new ProcedureParameterImpl<>( name, mode, typeReference.getBindableJavaType(), expressible ); registerParameter( parameter ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/hql/internal/FullyQualifiedReflectivePathTerminal.java b/hibernate-core/src/main/java/org/hibernate/query/hql/internal/FullyQualifiedReflectivePathTerminal.java index c28c863b0004..6addb283a5c7 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/hql/internal/FullyQualifiedReflectivePathTerminal.java +++ b/hibernate-core/src/main/java/org/hibernate/query/hql/internal/FullyQualifiedReflectivePathTerminal.java @@ -17,7 +17,7 @@ import org.hibernate.query.hql.HqlInterpretationException; import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SemanticQueryWalker; import org.hibernate.query.sqm.spi.SqmCreationContext; import org.hibernate.query.sqm.tree.SqmCopyContext; @@ -41,7 +41,7 @@ public class FullyQualifiedReflectivePathTerminal extends FullyQualifiedReflectivePath implements SqmExpression { - private final @Nullable SqmExpressible expressibleType; + private final @Nullable SqmBindable expressibleType; private final SqmCreationState creationState; private final Function,?> handler; @@ -137,7 +137,7 @@ private JavaTypeRegistry javaTypeRegistry() { } @Override - public @Nullable SqmExpressible getNodeType() { + public @Nullable SqmBindable getNodeType() { return expressibleType; } @@ -153,7 +153,7 @@ public JavaType getJavaTypeDescriptor() { @Override - public void applyInferableType(@Nullable SqmExpressible type) { + public void applyInferableType(@Nullable SqmBindable type) { } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java b/hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java index 38e82046e0a8..7eb6e426b28c 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java +++ b/hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java @@ -71,6 +71,7 @@ import org.hibernate.query.criteria.JpaRoot; import org.hibernate.query.criteria.JpaSearchOrder; import org.hibernate.query.criteria.JpaXmlTableColumnNode; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.domain.SqmEntityDomainType; import org.hibernate.query.sqm.tuple.internal.AnonymousTupleType; import org.hibernate.query.hql.HqlLogging; @@ -4457,7 +4458,7 @@ public SqmNamedParameter visitNamedParameter(HqlParser.NamedParameterContext private SqmNamedParameter visitNamedParameter( HqlParser.NamedParameterContext ctx, - SqmExpressible expressibleType) { + SqmBindable expressibleType) { parameterStyle = parameterStyle.withNamed(); return resolveParameter( new SqmNamedParameter<>( @@ -4476,7 +4477,7 @@ public SqmPositionalParameter visitPositionalParameter(HqlParser.PositionalPa private SqmPositionalParameter visitPositionalParameter( HqlParser.PositionalParameterContext ctx, - SqmExpressible expressibleType) { + SqmBindable expressibleType) { if ( ctx.getChildCount() == 1 ) { throw new ParameterLabelException( "Unlabeled ordinal parameter ('?' rather than ?1)" ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/internal/QueryHelper.java b/hibernate-core/src/main/java/org/hibernate/query/internal/QueryHelper.java index f8d7589f9ee1..3c8f9d353482 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/internal/QueryHelper.java +++ b/hibernate-core/src/main/java/org/hibernate/query/internal/QueryHelper.java @@ -4,7 +4,7 @@ */ package org.hibernate.query.internal; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; /** @@ -16,7 +16,7 @@ private QueryHelper() { } @SafeVarargs - public static SqmExpressible highestPrecedenceType(SqmExpressible... types) { + public static SqmBindable highestPrecedenceType(SqmBindable... types) { if ( types == null || types.length == 0 ) { return null; } @@ -33,9 +33,9 @@ public static SqmExpressible highestPrecedenceType(SqmExpressib return highest; } - public static SqmExpressible highestPrecedenceType2( - SqmExpressible type1, - SqmExpressible type2) { + public static SqmBindable highestPrecedenceType2( + SqmBindable type1, + SqmBindable type2) { if ( type1 == null && type2 == null ) { return null; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/BindableTypeImplementor.java b/hibernate-core/src/main/java/org/hibernate/query/spi/BindableTypeImplementor.java index fe83c377ae74..4e2e9bed0d45 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/BindableTypeImplementor.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/BindableTypeImplementor.java @@ -6,6 +6,7 @@ import org.hibernate.Incubating; import org.hibernate.query.BindableType; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmExpressible; /** @@ -27,5 +28,5 @@ public interface BindableTypeImplementor extends BindableType { /** * Resolve this parameter type to the corresponding {@link SqmExpressible}. */ - SqmExpressible resolveExpressible(BindingContext bindingContext); + SqmBindable resolveExpressible(BindingContext bindingContext); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/BindingContext.java b/hibernate-core/src/main/java/org/hibernate/query/spi/BindingContext.java index a6fbb1e5c8ef..26ad132a9048 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/BindingContext.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/BindingContext.java @@ -8,7 +8,7 @@ import org.hibernate.metamodel.MappingMetamodel; import org.hibernate.metamodel.model.domain.JpaMetamodel; import org.hibernate.query.BindableType; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.type.spi.TypeConfiguration; /** @@ -20,7 +20,7 @@ * @since 7.0 * * @see BindableTypeImplementor#resolveExpressible(BindingContext) - * @see org.hibernate.query.sqm.SqmExpressible#resolveExpressible(BindingContext) + * @see org.hibernate.query.sqm.SqmBindable#resolveExpressible(BindingContext) * @see org.hibernate.query.sqm.produce.function.ArgumentsValidator#validate(java.util.List, String, BindingContext) * @see org.hibernate.query.sqm.internal.TypecheckUtil */ @@ -33,16 +33,16 @@ public interface BindingContext { TypeConfiguration getTypeConfiguration(); /** - * Resolve this parameter type to the corresponding {@link SqmExpressible}. + * Resolve this parameter type to the corresponding {@link SqmBindable}. * - * @param bindableType the {@link BindableType} representing the type of a parameter, - * which may be null if the type is not known - * @return the corresponding {@link SqmExpressible}, or null if the argument was null * @param the type of the parameter + * @param bindableType the {@link BindableType} representing the type of the parameter, + * which may be null if the type is not known + * @return the corresponding {@link SqmBindable}, or null if the argument was null * * @since 7.0 */ - default SqmExpressible resolveExpressible(BindableType bindableType) { + default SqmBindable resolveExpressible(BindableType bindableType) { if ( bindableType == null ) { return null; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBindingValidator.java b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBindingValidator.java index b749390c76e3..db7e06713137 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBindingValidator.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBindingValidator.java @@ -10,7 +10,7 @@ import org.hibernate.query.BindableType; import org.hibernate.query.QueryArgumentException; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.type.descriptor.java.JavaType; import jakarta.persistence.TemporalType; @@ -39,7 +39,7 @@ public void validate( return; } - final SqmExpressible sqmExpressible = bindingContext.resolveExpressible( paramType ); + final SqmBindable sqmExpressible = bindingContext.resolveExpressible( paramType ); final Class parameterJavaType = paramType.getBindableJavaType() != null ? paramType.getBindableJavaType() diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmBindable.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmBindable.java new file mode 100644 index 000000000000..671dd9ed0f83 --- /dev/null +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmBindable.java @@ -0,0 +1,20 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.query.sqm; + +import org.hibernate.query.spi.BindableTypeImplementor; +import org.hibernate.query.spi.BindingContext; + +/** + * @param + * @author Gavin King + * @since 7.0 + */ +public interface SqmBindable extends SqmExpressible, BindableTypeImplementor { + @Override + default SqmBindable resolveExpressible(BindingContext bindingContext) { + return this; + } +} diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmExpressible.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmExpressible.java index 836d58f17101..d5eb12fa607a 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmExpressible.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmExpressible.java @@ -4,8 +4,6 @@ */ package org.hibernate.query.sqm; -import org.hibernate.query.spi.BindableTypeImplementor; -import org.hibernate.query.spi.BindingContext; import org.hibernate.query.sqm.tree.expression.SqmExpression; import org.hibernate.query.sqm.tree.domain.SqmDomainType; import org.hibernate.type.descriptor.java.JavaType; @@ -18,7 +16,7 @@ * * @author Steve Ebersole */ -public interface SqmExpressible extends BindableTypeImplementor { +public interface SqmExpressible { /** * The Java type descriptor for this expressible */ @@ -28,11 +26,6 @@ default JavaType getRelationalJavaType() { return getExpressibleJavaType(); } - @Override - default SqmExpressible resolveExpressible(BindingContext bindingContext) { - return this; - } - /** * The name of the type. * diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmPathSource.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmPathSource.java index 35bc794f5ec0..bba640d36f3e 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmPathSource.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmPathSource.java @@ -162,7 +162,7 @@ default SqmPathSource getIntermediatePathSource(SqmPathSource pathSource) SqmPath createSqmPath(SqmPath lhs, SqmPathSource intermediatePathSource); @Override - default SqmExpressible getExpressible() { + default SqmBindable getExpressible() { return getPathType(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/function/SelfRenderingSqmFunction.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/function/SelfRenderingSqmFunction.java index 8595fb40cbfb..adf5d5f7a85d 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/function/SelfRenderingSqmFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/function/SelfRenderingSqmFunction.java @@ -13,7 +13,7 @@ import org.hibernate.metamodel.spi.MappingMetamodelImplementor; import org.hibernate.metamodel.model.domain.ReturnableType; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.produce.function.ArgumentsValidator; import org.hibernate.query.sqm.produce.function.FunctionArgumentTypeResolver; import org.hibernate.query.sqm.produce.function.FunctionReturnTypeResolver; @@ -159,8 +159,9 @@ public Expression convertToSqlAst(SqmToSqlAstConverter walker) { ); } - public @Nullable SqmExpressible getNodeType() { - final SqmExpressible nodeType = super.getNodeType(); + @Override + public @Nullable SqmBindable getNodeType() { + final SqmBindable nodeType = super.getNodeType(); if ( nodeType == null ) { final NodeBuilder nodeBuilder = nodeBuilder(); final ReturnableType resultType = @@ -169,8 +170,7 @@ public Expression convertToSqlAst(SqmToSqlAstConverter walker) { return null; } else { - final SqmExpressible expressibleType = nodeBuilder.resolveExpressible( resultType ); - setExpressibleType( expressibleType ); + setExpressibleType( nodeBuilder.resolveExpressible( resultType ) ); return super.getNodeType(); } } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java index b67c1b368063..956d8e543015 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java @@ -79,6 +79,7 @@ import org.hibernate.query.common.FrameKind; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SetOperator; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.SqmQuerySource; @@ -935,7 +936,7 @@ public SqmTuple tuple(SqmExpressible tupleType, List) getTypeConfiguration().resolveTupleType( sqmExpressions ); } - return new SqmTuple<>( new ArrayList<>( sqmExpressions ), tupleType, this ); + return new SqmTuple<>( new ArrayList<>( sqmExpressions ), (SqmBindable) tupleType, this ); } @Override @@ -1350,9 +1351,8 @@ private SqmExpression createSqmArithmeticNode( rightHandExpression.getNodeType(), operator ); - //noinspection unchecked - final SqmExpressible castType = - (SqmExpressible) arithmeticType; + @SuppressWarnings("unchecked") + final var castType = (SqmBindable) arithmeticType; return new SqmBinaryArithmetic<>( operator, leftHandExpression, @@ -1534,11 +1534,11 @@ public SqmExpression toString(Expression character) { public SqmLiteral literal(T value, SqmExpression typeInferenceSource) { return value == null - ? new SqmLiteralNull( this ) + ? new SqmLiteralNull<>( this ) : createLiteral( value, resolveInferredType( value, typeInferenceSource ) ); } - private SqmLiteral createLiteral(T value, SqmExpressible expressible) { + private SqmLiteral createLiteral(T value, SqmBindable expressible) { if ( expressible.getExpressibleJavaType().isInstance( value ) ) { return new SqmLiteral<>( value, expressible, this ); } @@ -1554,7 +1554,7 @@ private SqmLiteral createLiteral(T value, SqmExpressible expressible) } } - private SqmExpressible resolveInferredType( + private SqmBindable resolveInferredType( T value, SqmExpression typeInferenceSource) { if ( typeInferenceSource != null ) { return typeInferenceSource.getNodeType(); @@ -1638,7 +1638,7 @@ public SqmExpression nullLiteral(Class resultClass) { else { final BasicType basicTypeForJavaType = getTypeConfiguration().getBasicTypeForJavaType( resultClass ); // if there's no basic type, it might be an entity type - final SqmExpressible sqmExpressible = + final SqmBindable sqmExpressible = basicTypeForJavaType == null ? resolveExpressible( getDomainModel().managedType( resultClass ) ) : basicTypeForJavaType; @@ -1646,7 +1646,7 @@ public SqmExpression nullLiteral(Class resultClass) { } } - class MultiValueParameterType implements SqmExpressible { + class MultiValueParameterType implements SqmBindable { private final JavaType javaType; public MultiValueParameterType(Class type) { @@ -2143,7 +2143,7 @@ private static BindableType resolveInferredParamet //noinspection unchecked return (BindableType) typeInferenceSource; } - final SqmExpressible nodeType = typeInferenceSource.getExpressible(); + final SqmBindable nodeType = typeInferenceSource.getExpressible(); if ( nodeType != null ) { return nodeType; } @@ -2234,7 +2234,7 @@ public SqmCoalesce coalesce() { @Override public JpaCoalesce coalesce(Expression x, Expression y) { @SuppressWarnings("unchecked") - final SqmExpressible sqmExpressible = (SqmExpressible) highestPrecedenceType( + final var sqmExpressible = (SqmBindable) highestPrecedenceType( ( (SqmExpression) x ).getExpressible(), ( (SqmExpression) y ).getExpressible() ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java index a4e9882af533..2f88ea15f10a 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java @@ -11,6 +11,7 @@ import org.hibernate.metamodel.model.domain.DomainType; import org.hibernate.metamodel.model.domain.EmbeddableDomainType; import org.hibernate.metamodel.model.domain.ManagedDomainType; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tuple.TupleType; import org.hibernate.metamodel.model.domain.internal.EntityDiscriminatorSqmPathSource; import org.hibernate.persister.entity.EntityPersister; @@ -100,11 +101,11 @@ public class TypecheckUtil { * @param lhsType the type of the expression on the LHS of the comparison operator * @param rhsType the type of the expression on the RHS of the comparison operator * - * @see #isTypeAssignable(SqmExpressible, SqmExpressible, BindingContext) + * @see #isTypeAssignable(SqmBindable, SqmBindable, BindingContext) */ public static boolean areTypesComparable( - SqmExpressible lhsType, - SqmExpressible rhsType, + SqmBindable lhsType, + SqmBindable rhsType, BindingContext bindingContext) { if ( lhsType == null || rhsType == null || lhsType == rhsType ) { return true; @@ -297,8 +298,8 @@ else if ( rhsType instanceof EntityDiscriminatorSqmPathSource discriminator ) final EntityPersister rhsEntity = bindingContext.getMappingMetamodel().getEntityDescriptor( rhsEntityName ); return rhsEntity.getRootEntityName().equals( lhsEntity.getRootEntityName() ); } - else if ( rhsType instanceof SqmExpressible rhsExpressible ) { - final SqmExpressible discriminatorType = (SqmExpressible) + else if ( rhsType instanceof SqmBindable rhsExpressible ) { + final SqmBindable discriminatorType = (SqmBindable) lhsDiscriminator.getEntityMapping().getDiscriminatorMapping().getMappedType(); return areTypesComparable( discriminatorType, rhsExpressible, bindingContext); } @@ -311,10 +312,10 @@ else if ( rhsType instanceof SqmExpressible rhsExpressible ) { * @param targetType the type of the path expression to which a value is assigned * @param expressionType the type of the value expression being assigned to the path * - * @see #areTypesComparable(SqmExpressible, SqmExpressible, BindingContext) + * @see #areTypesComparable(SqmBindable, SqmBindable, BindingContext) */ private static boolean isTypeAssignable( - SqmExpressible targetType, SqmExpressible expressionType, + SqmBindable targetType, SqmBindable expressionType, BindingContext bindingContext) { if ( targetType == null || expressionType == null || targetType == expressionType ) { @@ -371,7 +372,7 @@ && sameJavaType( targetType, expressionType ) ) { return targetType.getRelationalJavaType() == expressionType.getRelationalJavaType(); } - private static boolean sameJavaType(SqmExpressible leftType, SqmExpressible rightType) { + private static boolean sameJavaType(SqmBindable leftType, SqmBindable rightType) { return canonicalize( leftType.getBindableJavaType() ) == canonicalize( rightType.getBindableJavaType() ); } @@ -427,8 +428,8 @@ public static void assertComparable(Expression x, Expression y, BindingCon // allow comparing literal null to things if ( !( left instanceof SqmLiteralNull ) && !( right instanceof SqmLiteralNull ) ) { - final SqmExpressible leftType = left.getExpressible(); - final SqmExpressible rightType = right.getExpressible(); + final SqmBindable leftType = left.getExpressible(); + final SqmBindable rightType = right.getExpressible(); if ( leftType != null && rightType != null && left.isEnum() && right.isEnum() ) { // this is needed by Hibernate Processor due to the weird @@ -465,8 +466,8 @@ public static void assertAssignable( // TODO: check that the target path is nullable } else { - final SqmExpressible targetType = targetPath.getNodeType(); - final SqmExpressible expressionType = expression.getNodeType(); + final SqmBindable targetType = targetPath.getNodeType(); + final SqmBindable expressionType = expression.getNodeType(); if ( targetType != null && expressionType != null && targetPath.isEnum() ) { // this is needed by Hibernate Processor due to the weird // handling of enumerated types in the annotation processor diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/mutation/internal/SelectableMappingExpressionConverter.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/mutation/internal/SelectableMappingExpressionConverter.java index 1794d1b242d3..d60dfe7de091 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/mutation/internal/SelectableMappingExpressionConverter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/mutation/internal/SelectableMappingExpressionConverter.java @@ -8,7 +8,7 @@ import org.hibernate.metamodel.mapping.SelectableMapping; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.sql.SqmToSqlAstConverter; import org.hibernate.query.sqm.tree.expression.SqmSelfRenderingExpression; import org.hibernate.query.sqm.tree.from.SqmFrom; @@ -34,7 +34,7 @@ public static SqmSelection forSelectableMapping(SqmFrom from, Sele return new SqmSelection<>( new SqmSelfRenderingExpression<>( new SelectableMappingExpressionConverter( from.getNavigablePath(), selectableMapping ), - (SqmExpressible) selectableMapping.getJdbcMapping(), + (SqmBindable) selectableMapping.getJdbcMapping(), from.nodeBuilder() ), from.nodeBuilder() diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/internal/SetReturningFunctionTypeResolverBuilder.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/internal/SetReturningFunctionTypeResolverBuilder.java index de767df1b3f5..aae1f6187deb 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/internal/SetReturningFunctionTypeResolverBuilder.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/internal/SetReturningFunctionTypeResolverBuilder.java @@ -10,8 +10,8 @@ import org.hibernate.metamodel.mapping.SelectableMapping; import org.hibernate.metamodel.mapping.SelectablePath; import org.hibernate.metamodel.mapping.internal.SelectableMappingImpl; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tuple.internal.AnonymousTupleType; -import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.produce.function.SetReturningFunctionTypeResolver; import org.hibernate.query.sqm.sql.SqmToSqlAstConverter; import org.hibernate.query.sqm.tree.SqmTypedNode; @@ -100,7 +100,7 @@ public SetReturningFunctionTypeResolverImpl(SetReturningFunctionTypeResolverBuil @Override public AnonymousTupleType resolveTupleType(List> arguments, TypeConfiguration typeConfiguration) { - final SqmExpressible[] componentTypes = new SqmExpressible[typeResolvers.length + 1]; + final SqmBindable[] componentTypes = new SqmBindable[typeResolvers.length + 1]; final String[] componentNames = new String[typeResolvers.length + 1]; int i = 0; for ( TypeResolver typeResolver : typeResolvers ) { @@ -195,7 +195,7 @@ private interface TypeResolver { String selectionExpression(); - SqmExpressible resolveTupleType(List> arguments, TypeConfiguration typeConfiguration); + SqmBindable resolveTupleType(List> arguments, TypeConfiguration typeConfiguration); JdbcMapping resolveFunctionReturnType(List arguments, SqmToSqlAstConverter walker); } @@ -207,7 +207,7 @@ private record BasicTypeReferenceTypeResolver( ) implements TypeResolver { @Override - public SqmExpressible resolveTupleType(List> arguments, TypeConfiguration typeConfiguration) { + public SqmBindable resolveTupleType(List> arguments, TypeConfiguration typeConfiguration) { return typeConfiguration.getBasicTypeRegistry().resolve( basicTypeReference ); } @@ -224,7 +224,7 @@ private record BasicTypeTypeResolver( ) implements TypeResolver { @Override - public SqmExpressible resolveTupleType(List> arguments, TypeConfiguration typeConfiguration) { + public SqmBindable resolveTupleType(List> arguments, TypeConfiguration typeConfiguration) { return basicType; } @@ -241,7 +241,7 @@ private record ArgTypeTypeResolver( ) implements TypeResolver { @Override - public SqmExpressible resolveTupleType(List> arguments, TypeConfiguration typeConfiguration) { + public SqmBindable resolveTupleType(List> arguments, TypeConfiguration typeConfiguration) { return arguments.get( argPosition ).getExpressible(); } 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 3020db208692..799b556939a5 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 @@ -39,6 +39,7 @@ import org.hibernate.metamodel.mapping.internal.SqlTypedMappingImpl; import org.hibernate.metamodel.mapping.internal.ToOneAttributeMapping; import org.hibernate.metamodel.mapping.ordering.OrderByFragment; +import org.hibernate.metamodel.model.domain.AnyMappingDomainType; import org.hibernate.metamodel.model.domain.BasicDomainType; import org.hibernate.query.sqm.DiscriminatorSqmPath; import org.hibernate.metamodel.model.domain.EmbeddableDomainType; @@ -2863,7 +2864,7 @@ private void registerEntityNameProjectionUsage(SqmPath projectedPath, TableGr ); } } - else if ( projectedPath.getNodeType().getPathType() instanceof EntityDomainType entityDomainType ) { + else if ( projectedPath.getReferencedPathSource().getPathType() instanceof EntityDomainType entityDomainType ) { treatedType = entityDomainType; registerEntityNameUsage( tableGroup, EntityNameUse.PROJECTION, treatedType.getTypeName(), true ); if ( projectedPath instanceof SqmFrom sqmFrom ) { @@ -3283,7 +3284,7 @@ private TableGroup consumeAttributeJoin( } registerPathAttributeEntityNameUsage( sqmJoin, ownerTableGroup ); if ( !sqmJoin.hasTreats() - && sqmJoin.getNodeType().getPathType() instanceof EntityDomainType entityDomainType ) { + && sqmJoin.getReferencedPathSource().getPathType() instanceof EntityDomainType entityDomainType ) { final TableGroup elementTableGroup = joinedTableGroup instanceof PluralTableGroup pluralTableGroup ? pluralTableGroup.getElementTableGroup() @@ -6034,7 +6035,7 @@ else if ( sqmParameter.getAnticipatedType() == null ) { return resolveInferredValueMappingForParameter( inferredValueMapping ); } } - else if ( paramType instanceof EntityDomainType ) { + else if ( paramType instanceof EntityDomainType || paramType instanceof AnyMappingDomainType ) { // In JPA Criteria, it is possible to define a parameter of an entity type, // but that should infer the mapping type from context, // otherwise this would default to binding the PK which might be wrong @@ -6598,9 +6599,9 @@ private Object transformDurationArithmetic(SqmBinaryArithmetic expression) { if ( type instanceof SqmExpressible sqmExpressible ) { adjustedTimestampType = sqmExpressible; } - else if ( type instanceof ValueMapping valueMapping ) { - adjustedTimestampType = (SqmExpressible) valueMapping.getMappedType(); - } +// else if ( type instanceof ValueMapping valueMapping ) { +// adjustedTimestampType = (SqmExpressible) valueMapping.getMappedType(); +// } else { // else we know it has not been transformed adjustedTimestampType = lhs.getNodeType(); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmExpressibleAccessor.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmExpressibleAccessor.java index 95181ea4d73b..17d8c199682d 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmExpressibleAccessor.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmExpressibleAccessor.java @@ -4,6 +4,7 @@ */ package org.hibernate.query.sqm.tree; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.type.descriptor.java.JavaType; @@ -21,5 +22,5 @@ default JavaType getNodeJavaType() { return nodeType == null ? null : nodeType.getExpressibleJavaType(); } - SqmExpressible getExpressible(); + SqmBindable getExpressible(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmTypedNode.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmTypedNode.java index 2d2a26330e03..ecd7e247151d 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmTypedNode.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmTypedNode.java @@ -4,6 +4,7 @@ */ package org.hibernate.query.sqm.tree; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.type.descriptor.java.JavaType; @@ -24,11 +25,12 @@ public interface SqmTypedNode extends SqmNode, SqmExpressibleAccessor, Sqm } @Override - default @Nullable SqmExpressible getExpressible() { + default @Nullable SqmBindable getExpressible() { return getNodeType(); } - @Nullable SqmExpressible getNodeType(); + @Nullable + SqmBindable getNodeType(); @Override SqmTypedNode copy(SqmCopyContext context); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTable.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTable.java index cb8091f35855..a5b5fd638bc5 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTable.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTable.java @@ -11,10 +11,10 @@ import org.hibernate.metamodel.model.domain.DomainType; import org.hibernate.query.criteria.JpaCteCriteriaAttribute; import org.hibernate.query.criteria.JpaCteCriteriaType; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tuple.internal.AnonymousTupleSimpleSqmPathSource; import org.hibernate.query.sqm.tuple.internal.AnonymousTupleType; import org.hibernate.query.sqm.tuple.internal.CteTupleTableGroupProducer; -import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.select.SqmSelectQuery; import org.hibernate.query.sqm.tree.select.SqmSelectableNode; @@ -114,8 +114,8 @@ public JpaCteCriteriaAttribute getAttribute(String name) { } @Override - public SqmExpressible get(String componentName) { - final SqmExpressible sqmExpressible = super.get( componentName ); + public SqmBindable get(String componentName) { + final SqmBindable sqmExpressible = super.get( componentName ); if ( sqmExpressible != null ) { return sqmExpressible; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTableColumn.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTableColumn.java index 2ae1652e216a..d0d2c388477c 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTableColumn.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTableColumn.java @@ -6,6 +6,7 @@ import org.hibernate.query.criteria.JpaCteCriteriaAttribute; import org.hibernate.query.criteria.JpaCteCriteriaType; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmExpressible; /** @@ -15,12 +16,12 @@ public class SqmCteTableColumn implements JpaCteCriteriaAttribute { private final SqmCteTable cteTable; private final String columnName; - private final SqmExpressible typeExpressible; + private final SqmBindable typeExpressible; public SqmCteTableColumn( SqmCteTable cteTable, String columnName, - SqmExpressible typeExpressible) { + SqmBindable typeExpressible) { this.cteTable = cteTable; this.columnName = columnName; this.typeExpressible = typeExpressible; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmPath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmPath.java index 93c9f60cbaf4..dab746f5a3a1 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmPath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmPath.java @@ -18,7 +18,7 @@ import org.hibernate.metamodel.model.domain.ManagedDomainType; import org.hibernate.metamodel.model.domain.PersistentAttribute; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.expression.AbstractSqmExpression; @@ -55,11 +55,11 @@ protected AbstractSqmPath( SqmPathSource referencedPathSource, SqmPath lhs, NodeBuilder nodeBuilder) { - super( referencedPathSource, nodeBuilder ); + super( referencedPathSource.getSqmType(), nodeBuilder ); this.navigablePath = navigablePath; this.referencedPathSource = referencedPathSource; this.lhs = lhs; - assert super.getNodeType() == referencedPathSource; +// assert super.getNodeType() == referencedPathSource; } protected void copyTo(AbstractSqmPath target, SqmCopyContext context) { @@ -81,8 +81,8 @@ private SqmPath getRoot(SqmPath lhs) { } @Override - public SqmPathSource getNodeType() { - return referencedPathSource; + public SqmBindable getNodeType() { + return referencedPathSource.getPathType(); } @Override @@ -159,8 +159,8 @@ && getLhs().getResolvedModel().getPathType() instanceof SqmManagedDomainType } @Override - public SqmExpressible getExpressible() { - return getResolvedModel(); + public SqmBindable getExpressible() { + return getResolvedModel().getExpressible(); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmSimplePath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmSimplePath.java index afe8d85e66ad..927367d2e21e 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmSimplePath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmSimplePath.java @@ -4,6 +4,7 @@ */ package org.hibernate.query.sqm.tree.domain; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.spi.NavigablePath; import org.hibernate.query.sqm.NodeBuilder; @@ -42,8 +43,8 @@ public void appendHqlString(StringBuilder hql, SqmRenderContext context) { } @Override - public SqmPathSource getNodeType() { - return getReferencedPathSource(); + public SqmBindable getNodeType() { + return getReferencedPathSource().getExpressible(); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java index 3c5dc2124075..4a61bc345659 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java @@ -8,6 +8,7 @@ import org.hibernate.metamodel.model.domain.EntityDomainType; import org.hibernate.query.hql.spi.SqmPathRegistry; import org.hibernate.query.spi.QueryEngine; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.UnknownPathException; import org.hibernate.query.sqm.function.SelfRenderingSqmFunction; import org.hibernate.query.sqm.function.SqmFunctionRegistry; @@ -18,7 +19,6 @@ import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.type.BasicPluralType; @@ -32,7 +32,7 @@ */ public class SqmBasicValuedSimplePath extends AbstractSqmSimplePath - implements SqmExpressible { + implements SqmBindable { public SqmBasicValuedSimplePath( NavigablePath navigablePath, SqmPathSource referencedPathSource, @@ -73,7 +73,7 @@ public SqmBasicValuedSimplePath copy(SqmCopyContext context) { } @Override - public SqmExpressible getExpressible() { + public SqmBindable getExpressible() { return this; } @@ -113,8 +113,8 @@ public SqmPath resolveIndexedAccess( new SqmFunctionPath<>( getIndexFunction( selector, - getNodeType().getPathType(), -// getReferencedPathSource().getPathType(), +// getNodeType().getPathType(), + getReferencedPathSource().getPathType(), creationState.getCreationContext().getQueryEngine() ) ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java index ff04c340fd2a..5a700f540848 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java @@ -7,17 +7,17 @@ import org.hibernate.Incubating; import org.hibernate.metamodel.model.domain.DomainType; import org.hibernate.query.BindableType; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; @Incubating public interface SqmDomainType - extends DomainType, SqmExpressible, BindableType { + extends DomainType, SqmBindable, BindableType { @Override SqmDomainType getSqmType(); @Override default String getTypeName() { - return SqmExpressible.super.getTypeName(); + return SqmBindable.super.getTypeName(); } default int getTupleLength() { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmElementAggregateFunction.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmElementAggregateFunction.java index 15274236b1bd..70602b0280be 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmElementAggregateFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmElementAggregateFunction.java @@ -10,7 +10,7 @@ import org.hibernate.metamodel.model.domain.ReturnableType; import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.sql.SqmToSqlAstConverter; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -61,7 +61,7 @@ public SqmElementAggregateFunction(SqmPath pluralDomainPath, String functionN } @Override - public SqmExpressible getExpressible() { + public SqmBindable getExpressible() { return returnableType == null ? super.getExpressible() : nodeBuilder().resolveExpressible( returnableType ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddableDomainType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddableDomainType.java index a37add972ea2..152c674a2bf1 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddableDomainType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddableDomainType.java @@ -13,4 +13,10 @@ public interface SqmEmbeddableDomainType extends EmbeddableDomainType, Sqm default SqmEmbeddableDomainType getSqmType() { return this; } + + @Override + default SqmEmbeddableDomainType getPathType() { + return this; + } + } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddedValuedSimplePath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddedValuedSimplePath.java index d09f69b9b170..b413f1936a41 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddedValuedSimplePath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddedValuedSimplePath.java @@ -10,7 +10,7 @@ import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.TreatException; import org.hibernate.query.sqm.tree.SqmCopyContext; @@ -22,7 +22,7 @@ */ public class SqmEmbeddedValuedSimplePath extends AbstractSqmSimplePath - implements SqmExpressible { + implements SqmBindable { public SqmEmbeddedValuedSimplePath( NavigablePath navigablePath, @@ -67,7 +67,7 @@ public SqmEmbeddedValuedSimplePath copy(SqmCopyContext context) { } @Override - public SqmExpressible getExpressible() { + public SqmBindable getExpressible() { return this; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEntityValuedSimplePath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEntityValuedSimplePath.java index f43fe1163498..8d50ff99a6c4 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEntityValuedSimplePath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEntityValuedSimplePath.java @@ -5,6 +5,7 @@ package org.hibernate.query.sqm.tree.domain; import org.hibernate.metamodel.model.domain.EntityDomainType; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.spi.NavigablePath; import org.hibernate.query.PathException; import org.hibernate.query.hql.spi.SqmCreationState; @@ -62,9 +63,8 @@ public X accept(SemanticQueryWalker walker) { } @Override - public SqmPathSource getNodeType() { - //noinspection unchecked - return (SqmPathSource) getReferencedPathSource().getPathType(); + public SqmBindable getNodeType() { + return getReferencedPathSource().getPathType(); } // We can't expose that the type is a EntityDomainType because it could also be a MappedSuperclass // Ideally, we would specify the return type to be IdentifiableDomainType, but that does not implement SqmPathSource yet diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmFunctionPath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmFunctionPath.java index cb4692fe51c5..749f98f9f70f 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmFunctionPath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmFunctionPath.java @@ -12,7 +12,7 @@ import org.hibernate.query.hql.spi.SqmPathRegistry; import org.hibernate.query.spi.QueryEngine; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.TreatException; import org.hibernate.query.sqm.function.SelfRenderingSqmFunction; @@ -50,7 +50,7 @@ public SqmFunctionPath(NavigablePath navigablePath, SqmFunction function) { private static SqmPathSource determinePathSource(NavigablePath navigablePath, SqmFunction function) { //noinspection unchecked - final SqmExpressible nodeType = (SqmExpressible) function.getNodeType(); + final SqmBindable nodeType = (SqmBindable) function.getNodeType(); final Class bindableJavaType = nodeType.getBindableJavaType(); final ManagedType managedType = function.nodeBuilder() .getJpaMetamodel() @@ -125,7 +125,7 @@ public SqmPath resolveIndexedAccess( if ( indexedPath != null ) { return indexedPath; } - if ( !( getNodeType().getPathType() instanceof BasicPluralType ) ) { + if ( !( getReferencedPathSource().getPathType() instanceof BasicPluralType ) ) { throw new UnsupportedOperationException( "Index access is only supported for basic plural types." ); } final QueryEngine queryEngine = creationState.getCreationContext().getQueryEngine(); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmIndexAggregateFunction.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmIndexAggregateFunction.java index 5656faae1f07..c5f09409715e 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmIndexAggregateFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmIndexAggregateFunction.java @@ -10,7 +10,7 @@ import org.hibernate.metamodel.model.domain.ReturnableType; import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.sql.SqmToSqlAstConverter; import org.hibernate.query.sqm.tree.SqmCopyContext; @@ -65,7 +65,7 @@ public SqmIndexAggregateFunction(SqmPath pluralDomainPath, String functionNam } @Override - public SqmExpressible getExpressible() { + public SqmBindable getExpressible() { return returnableType == null ? super.getExpressible() : nodeBuilder().resolveExpressible( returnableType ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmMapEntryReference.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmMapEntryReference.java index 328c0db73493..cd58eee1bdbe 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmMapEntryReference.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmMapEntryReference.java @@ -13,7 +13,7 @@ import org.hibernate.query.criteria.JpaSelection; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.select.SqmSelectableNode; @@ -31,7 +31,7 @@ * @author Steve Ebersole */ public class SqmMapEntryReference - implements SqmSelectableNode>, Expression>, SqmExpressible> { + implements SqmSelectableNode>, Expression>, SqmBindable> { @SuppressWarnings({"FieldCanBeLocal", "unused"}) private final SqmPath mapPath; private final NodeBuilder nodeBuilder; @@ -114,7 +114,7 @@ public List> getSelectionItems() { } @Override - public SqmExpressible> getNodeType() { + public SqmBindable> getNodeType() { return this; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmPath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmPath.java index 463bcfdaa171..32355446602e 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmPath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmPath.java @@ -20,7 +20,7 @@ import org.hibernate.query.hql.spi.SemanticPathPart; import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.ParsingException; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.expression.SqmExpression; @@ -87,10 +87,10 @@ public interface SqmPath extends SqmExpression, SemanticPathPart, JpaPath< * This node's type is its "referenced path source" */ @Override - SqmPathSource getNodeType(); + SqmBindable getNodeType(); @Override - default void applyInferableType(@Nullable SqmExpressible type) { + default void applyInferableType(@Nullable SqmBindable type) { // do nothing } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmSingularJoin.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmSingularJoin.java index 8f80879d0471..7103bda8094b 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmSingularJoin.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmSingularJoin.java @@ -9,6 +9,7 @@ import org.hibernate.metamodel.model.domain.EntityDomainType; import org.hibernate.metamodel.model.domain.ManagedDomainType; import org.hibernate.query.sqm.SemanticQueryWalker; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.spi.NavigablePath; import org.hibernate.query.sqm.NodeBuilder; @@ -84,8 +85,8 @@ public SqmSingularJoin copy(SqmCopyContext context) { } @Override - public SqmPathSource getNodeType() { - return getReferencedPathSource(); + public SqmBindable getNodeType() { + return getReferencedPathSource().getExpressible(); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedBagJoin.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedBagJoin.java index aa9428a2b761..edc825fb4afe 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedBagJoin.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedBagJoin.java @@ -8,6 +8,7 @@ import org.hibernate.metamodel.model.domain.TreatableDomainType; import org.hibernate.query.criteria.JpaExpression; import org.hibernate.query.criteria.JpaPredicate; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -103,7 +104,7 @@ public TreatableDomainType getTreatTarget() { } @Override - public SqmPathSource getNodeType() { + public SqmBindable getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedCrossJoin.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedCrossJoin.java index 53030e3db6f5..ea0f3bd72dd5 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedCrossJoin.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedCrossJoin.java @@ -5,6 +5,7 @@ package org.hibernate.query.sqm.tree.domain; import org.hibernate.metamodel.model.domain.EntityDomainType; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -73,9 +74,9 @@ public SqmPath getWrappedPath() { return wrappedPath; } - @SuppressWarnings({ "rawtypes" }) + @SuppressWarnings("rawtypes") @Override - public SqmPathSource getNodeType() { + public SqmBindable getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedEmbeddedValuedSimplePath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedEmbeddedValuedSimplePath.java index 52e6aa4409af..ab61cf0be2b8 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedEmbeddedValuedSimplePath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedEmbeddedValuedSimplePath.java @@ -6,6 +6,7 @@ import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.SemanticQueryWalker; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -77,7 +78,7 @@ public SqmPath getWrappedPath() { } @Override - public SqmPathSource getNodeType() { + public SqmBindable getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedEntityJoin.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedEntityJoin.java index a044b2f49f60..47625ca54cb0 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedEntityJoin.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedEntityJoin.java @@ -5,7 +5,7 @@ package org.hibernate.query.sqm.tree.domain; import org.hibernate.metamodel.model.domain.EntityDomainType; -import org.hibernate.query.sqm.SqmPathSource; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.from.SqmEntityJoin; @@ -87,7 +87,7 @@ public SqmPath getWrappedPath() { } @Override - public SqmPathSource getNodeType() { + public SqmBindable getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedListJoin.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedListJoin.java index b81825f3b191..f83b3b69d50b 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedListJoin.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedListJoin.java @@ -9,6 +9,7 @@ import org.hibernate.query.criteria.JpaExpression; import org.hibernate.query.criteria.JpaPredicate; import org.hibernate.query.hql.spi.SqmCreationState; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -105,7 +106,7 @@ public TreatableDomainType getTreatTarget() { } @Override - public SqmPathSource getNodeType() { + public SqmBindable getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedMapJoin.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedMapJoin.java index 7f825fd1625b..9196abe87eab 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedMapJoin.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedMapJoin.java @@ -9,6 +9,7 @@ import org.hibernate.metamodel.model.domain.TreatableDomainType; import org.hibernate.query.criteria.JpaExpression; import org.hibernate.query.criteria.JpaPredicate; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -103,7 +104,7 @@ public TreatableDomainType getTreatTarget() { } @Override - public SqmPathSource getNodeType() { + public SqmBindable getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedPluralPartJoin.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedPluralPartJoin.java index ce7826659fb1..1ebaaf0183a3 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedPluralPartJoin.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedPluralPartJoin.java @@ -5,6 +5,7 @@ package org.hibernate.query.sqm.tree.domain; import org.hibernate.metamodel.model.domain.EntityDomainType; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -84,7 +85,7 @@ public EntityDomainType getTreatTarget() { } @Override - public SqmPathSource getNodeType() { + public SqmBindable getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedRoot.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedRoot.java index f0c84989ebc9..e2fc32a9c0f5 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedRoot.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedRoot.java @@ -7,7 +7,7 @@ import org.hibernate.metamodel.model.domain.EntityDomainType; import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmPathSource; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.from.SqmRoot; @@ -86,7 +86,7 @@ public SqmPath getWrappedPath() { } @Override - public SqmPathSource getNodeType() { + public SqmBindable getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSetJoin.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSetJoin.java index 061a3280e781..3d7eb7e7f9af 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSetJoin.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSetJoin.java @@ -8,6 +8,7 @@ import org.hibernate.metamodel.model.domain.TreatableDomainType; import org.hibernate.query.criteria.JpaExpression; import org.hibernate.query.criteria.JpaPredicate; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -103,7 +104,7 @@ public TreatableDomainType getTreatTarget() { } @Override - public SqmPathSource getNodeType() { + public SqmBindable getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSimplePath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSimplePath.java index 462fc821a5c0..73e2d16e2447 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSimplePath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSimplePath.java @@ -7,6 +7,7 @@ import org.hibernate.query.PathException; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -103,7 +104,7 @@ public SqmPath getWrappedPath() { } @Override - public SqmPathSource getNodeType() { + public SqmBindable getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSingularJoin.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSingularJoin.java index 68e95ea646ee..75d3bece678b 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSingularJoin.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSingularJoin.java @@ -8,6 +8,7 @@ import org.hibernate.metamodel.model.domain.TreatableDomainType; import org.hibernate.query.criteria.JpaExpression; import org.hibernate.query.criteria.JpaPredicate; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -106,7 +107,7 @@ public TreatableDomainType getTreatTarget() { } @Override - public SqmPathSource getNodeType() { + public SqmBindable getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AbstractSqmExpression.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AbstractSqmExpression.java index fc59c9b63031..d2a815bcb832 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AbstractSqmExpression.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AbstractSqmExpression.java @@ -9,7 +9,7 @@ import java.util.Collection; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmTreeCreationLogger; import org.hibernate.query.sqm.internal.SqmCriteriaNodeBuilder; import org.hibernate.query.sqm.tree.jpa.AbstractJpaSelection; @@ -27,7 +27,7 @@ */ public abstract class AbstractSqmExpression extends AbstractJpaSelection implements SqmExpression { - public AbstractSqmExpression(@Nullable SqmExpressible type, NodeBuilder criteriaBuilder) { + public AbstractSqmExpression(@Nullable SqmBindable type, NodeBuilder criteriaBuilder) { super( type, criteriaBuilder ); } @@ -37,10 +37,10 @@ public SqmCriteriaNodeBuilder nodeBuilder() { } @Override - public void applyInferableType(@Nullable SqmExpressible type) { + public void applyInferableType(@Nullable SqmBindable type) { } - protected void internalApplyInferableType(@Nullable SqmExpressible newType) { + protected void internalApplyInferableType(@Nullable SqmBindable newType) { SqmTreeCreationLogger.LOGGER.debugf( "Applying inferable type to SqmExpression [%s] : %s -> %s", this, diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AbstractSqmParameter.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AbstractSqmParameter.java index ad0c5db3e7c4..a443b6d99137 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AbstractSqmParameter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AbstractSqmParameter.java @@ -7,6 +7,7 @@ import org.hibernate.metamodel.model.domain.PluralPersistentAttribute; import org.hibernate.query.BindableType; import org.hibernate.query.sqm.NodeBuilder; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmExpressible; import org.checkerframework.checker.nullness.qual.Nullable; @@ -21,17 +22,17 @@ public abstract class AbstractSqmParameter extends AbstractSqmExpression i public AbstractSqmParameter( boolean canBeMultiValued, - SqmExpressible inherentType, + SqmBindable inherentType, NodeBuilder nodeBuilder) { super( inherentType, nodeBuilder ); this.canBeMultiValued = canBeMultiValued; } @Override - public void applyInferableType(@Nullable SqmExpressible type) { + public void applyInferableType(@Nullable SqmBindable type) { if ( type != null ) { if ( type instanceof PluralPersistentAttribute pluralPersistentAttribute ) { - internalApplyInferableType( (SqmExpressible) pluralPersistentAttribute.getElementType() ); + internalApplyInferableType( (SqmBindable) pluralPersistentAttribute.getElementType() ); } else { internalApplyInferableType( type ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AsWrapperSqmExpression.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AsWrapperSqmExpression.java index e9278c3fda66..8f8702f18a31 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AsWrapperSqmExpression.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AsWrapperSqmExpression.java @@ -5,7 +5,7 @@ package org.hibernate.query.sqm.tree.expression; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.type.BasicType; @@ -13,7 +13,7 @@ public class AsWrapperSqmExpression extends AbstractSqmExpression { private final SqmExpression expression; - AsWrapperSqmExpression(SqmExpressible type, SqmExpression expression) { + AsWrapperSqmExpression(SqmBindable type, SqmExpression expression) { super( type, expression.nodeBuilder() ); this.expression = expression; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/JpaCriteriaParameter.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/JpaCriteriaParameter.java index 42b62902326c..45ea3c58163c 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/JpaCriteriaParameter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/JpaCriteriaParameter.java @@ -13,6 +13,7 @@ import org.hibernate.query.spi.QueryParameterImplementor; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -120,7 +121,7 @@ public Class getParameterType() { } @Override - protected void internalApplyInferableType(SqmExpressible newType) { + protected void internalApplyInferableType(SqmBindable newType) { super.internalApplyInferableType( newType ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/NullSqmExpressible.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/NullSqmExpressible.java index a8502b5d6a78..8f41615db326 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/NullSqmExpressible.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/NullSqmExpressible.java @@ -4,14 +4,14 @@ */ package org.hibernate.query.sqm.tree.expression; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.domain.SqmDomainType; import org.hibernate.type.descriptor.java.JavaType; /** * @author Steve Ebersole */ -public class NullSqmExpressible implements SqmExpressible { +public class NullSqmExpressible implements SqmBindable { /** * Singleton access */ diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmAliasedNodeRef.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmAliasedNodeRef.java index 2b6a200ba16f..53f49f92d3f0 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmAliasedNodeRef.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmAliasedNodeRef.java @@ -4,11 +4,11 @@ */ package org.hibernate.query.sqm.tree.expression; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.spi.NavigablePath; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.tree.SqmCopyContext; /** @@ -22,7 +22,7 @@ public class SqmAliasedNodeRef extends AbstractSqmExpression { // The navigable path is optionally set in case this is a reference to an attribute of a selection private final NavigablePath navigablePath; - public SqmAliasedNodeRef(int position, SqmExpressible intType, NodeBuilder criteriaBuilder) { + public SqmAliasedNodeRef(int position, SqmBindable intType, NodeBuilder criteriaBuilder) { super( intType, criteriaBuilder ); this.position = position; this.navigablePath = null; @@ -31,7 +31,7 @@ public SqmAliasedNodeRef(int position, SqmExpressible intType, NodeBuil public SqmAliasedNodeRef( int position, NavigablePath navigablePath, - SqmExpressible type, + SqmBindable type, NodeBuilder criteriaBuilder) { super( type, criteriaBuilder ); this.position = position; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmAny.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmAny.java index 8b04cb11a358..314062613a7b 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmAny.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmAny.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.select.SqmSubQuery; @@ -26,7 +26,7 @@ public SqmAny(SqmSubQuery subquery, NodeBuilder criteriaBuilder) { } @Override - public @Nullable SqmExpressible getNodeType() { + public @Nullable SqmBindable getNodeType() { return subquery.getNodeType(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmBinaryArithmetic.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmBinaryArithmetic.java index ded2dfa1c4e6..1b87d2ff8098 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmBinaryArithmetic.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmBinaryArithmetic.java @@ -8,7 +8,7 @@ import org.hibernate.query.sqm.BinaryArithmeticOperator; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.select.SqmSelectableNode; @@ -33,7 +33,7 @@ public SqmBinaryArithmetic( NodeBuilder nodeBuilder) { //noinspection unchecked super( - (SqmExpressible) domainModel.getTypeConfiguration().resolveArithmeticType( + (SqmBindable) domainModel.getTypeConfiguration().resolveArithmeticType( lhsOperand.getExpressible(), rhsOperand.getExpressible(), operator @@ -57,7 +57,7 @@ public SqmBinaryArithmetic( BinaryArithmeticOperator operator, SqmExpression lhsOperand, SqmExpression rhsOperand, - SqmExpressible expressibleType, + SqmBindable expressibleType, NodeBuilder nodeBuilder) { super( expressibleType, nodeBuilder ); @@ -122,7 +122,7 @@ public SqmExpression getRightHandOperand() { } @Override - protected void internalApplyInferableType(SqmExpressible type) { + protected void internalApplyInferableType(SqmBindable type) { rhsOperand.applyInferableType( type ); lhsOperand.applyInferableType( type ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmByUnit.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmByUnit.java index 5e06d4429808..845d00da2d10 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmByUnit.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmByUnit.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -20,7 +20,7 @@ public class SqmByUnit extends AbstractSqmExpression { public SqmByUnit( SqmDurationUnit unit, SqmExpression duration, - SqmExpressible longType, + SqmBindable longType, NodeBuilder nodeBuilder) { super( longType, nodeBuilder ); this.unit = unit; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCaseSearched.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCaseSearched.java index 9669f37e5fca..c33b53faf1d6 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCaseSearched.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCaseSearched.java @@ -11,7 +11,7 @@ import org.hibernate.query.internal.QueryHelper; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.predicate.SqmPredicate; @@ -31,7 +31,7 @@ public SqmCaseSearched(NodeBuilder nodeBuilder) { this( null, nodeBuilder ); } - public SqmCaseSearched(SqmExpressible inherentType, NodeBuilder nodeBuilder) { + public SqmCaseSearched(SqmBindable inherentType, NodeBuilder nodeBuilder) { this( inherentType, 10, nodeBuilder ); } @@ -39,7 +39,7 @@ public SqmCaseSearched(int estimatedWhenSize, NodeBuilder nodeBuilder) { this( null, estimatedWhenSize, nodeBuilder ); } - private SqmCaseSearched(SqmExpressible inherentType, int estimatedWhenSize, NodeBuilder nodeBuilder) { + private SqmCaseSearched(SqmBindable inherentType, int estimatedWhenSize, NodeBuilder nodeBuilder) { super( inherentType, nodeBuilder ); this.whenFragments = new ArrayList<>( estimatedWhenSize ); } @@ -89,10 +89,10 @@ public SqmCaseSearched otherwise(SqmExpression otherwiseExpressi return this; } - private void applyInferableResultType(SqmExpressible type) { + private void applyInferableResultType(SqmBindable type) { if ( type != null ) { - final SqmExpressible oldType = getExpressible(); - final SqmExpressible newType = QueryHelper.highestPrecedenceType2( oldType, type ); + final SqmBindable oldType = getExpressible(); + final SqmBindable newType = QueryHelper.highestPrecedenceType2( oldType, type ); if ( newType != null && newType != oldType ) { internalApplyInferableType( newType ); } @@ -100,7 +100,7 @@ private void applyInferableResultType(SqmExpressible type) { } @Override - protected void internalApplyInferableType(SqmExpressible newType) { + protected void internalApplyInferableType(SqmBindable newType) { super.internalApplyInferableType( newType ); if ( otherwise != null ) { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCaseSimple.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCaseSimple.java index 19fe31985da2..1ba7b37962f0 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCaseSimple.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCaseSimple.java @@ -11,7 +11,7 @@ import org.hibernate.query.criteria.JpaSimpleCase; import org.hibernate.query.internal.QueryHelper; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SemanticQueryWalker; import org.hibernate.query.sqm.tree.SqmCopyContext; @@ -36,13 +36,13 @@ public SqmCaseSimple(SqmExpression fixture, int estimatedWhenSize, NodeBuilde this( fixture, null, estimatedWhenSize, nodeBuilder ); } - public SqmCaseSimple(SqmExpression fixture, SqmExpressible inherentType, NodeBuilder nodeBuilder) { + public SqmCaseSimple(SqmExpression fixture, SqmBindable inherentType, NodeBuilder nodeBuilder) { this( fixture, inherentType, 10, nodeBuilder ); } private SqmCaseSimple( SqmExpression fixture, - SqmExpressible inherentType, + SqmBindable inherentType, int estimatedWhenSize, NodeBuilder nodeBuilder) { super( inherentType, nodeBuilder ); @@ -102,10 +102,10 @@ public void when(SqmExpression test, SqmExpression res applyInferableResultType( result.getNodeType() ); } - private void applyInferableResultType(SqmExpressible type) { + private void applyInferableResultType(SqmBindable type) { if ( type != null ) { - final SqmExpressible oldType = getExpressible(); - final SqmExpressible newType = QueryHelper.highestPrecedenceType2( oldType, type ); + final SqmBindable oldType = getExpressible(); + final SqmBindable newType = QueryHelper.highestPrecedenceType2( oldType, type ); if ( newType != null && newType != oldType ) { internalApplyInferableType( newType ); } @@ -113,7 +113,7 @@ private void applyInferableResultType(SqmExpressible type) { } @Override - protected void internalApplyInferableType(SqmExpressible newType) { + protected void internalApplyInferableType(SqmBindable newType) { super.internalApplyInferableType( newType ); if ( otherwise != null ) { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCastTarget.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCastTarget.java index e453ecd5bc4c..275d86c06d4a 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCastTarget.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCastTarget.java @@ -9,7 +9,7 @@ import org.hibernate.query.criteria.JpaCastTarget; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.AbstractSqmNode; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -89,7 +89,7 @@ public X accept(SemanticQueryWalker walker) { } @Override - public SqmExpressible getNodeType() { + public SqmBindable getNodeType() { return nodeBuilder().resolveExpressible( type ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCoalesce.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCoalesce.java index bbdff81be7bb..1c417150ed71 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCoalesce.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCoalesce.java @@ -12,7 +12,7 @@ import org.hibernate.query.criteria.JpaExpression; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.function.SqmFunctionDescriptor; import org.hibernate.query.sqm.tree.SqmCopyContext; @@ -31,13 +31,13 @@ public SqmCoalesce(NodeBuilder nodeBuilder) { this( null, nodeBuilder ); } - public SqmCoalesce(SqmExpressible type, NodeBuilder nodeBuilder) { + public SqmCoalesce(SqmBindable type, NodeBuilder nodeBuilder) { super( type, nodeBuilder ); functionDescriptor = nodeBuilder.getQueryEngine().getSqmFunctionRegistry().findFunctionDescriptor( "coalesce" ); this.arguments = new ArrayList<>(); } - public SqmCoalesce(SqmExpressible type, int numberOfArguments, NodeBuilder nodeBuilder) { + public SqmCoalesce(SqmBindable type, int numberOfArguments, NodeBuilder nodeBuilder) { super( type, nodeBuilder ); functionDescriptor = nodeBuilder.getQueryEngine().getSqmFunctionRegistry().findFunctionDescriptor( "coalesce" ); this.arguments = new ArrayList<>( numberOfArguments ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCollation.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCollation.java index c6b0443339ff..a720c58807c8 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCollation.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCollation.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -14,7 +14,7 @@ * @author Christian Beikov */ public class SqmCollation extends SqmLiteral { - public SqmCollation(String value, SqmExpressible inherentType, NodeBuilder nodeBuilder) { + public SqmCollation(String value, SqmBindable inherentType, NodeBuilder nodeBuilder) { super(value, inherentType, nodeBuilder); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCollectionSize.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCollectionSize.java index 0515e8926665..260b163a3f86 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCollectionSize.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCollectionSize.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.domain.SqmPath; @@ -24,7 +24,7 @@ public SqmCollectionSize(SqmPath pluralPath, NodeBuilder nodeBuilder) { this( pluralPath, nodeBuilder.getIntegerType(), nodeBuilder ); } - public SqmCollectionSize(SqmPath pluralPath, SqmExpressible sizeType, NodeBuilder nodeBuilder) { + public SqmCollectionSize(SqmPath pluralPath, SqmBindable sizeType, NodeBuilder nodeBuilder) { super( sizeType, nodeBuilder ); this.pluralPath = pluralPath; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmDistinct.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmDistinct.java index 54ca72178e52..ce24ddd6f2da 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmDistinct.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmDistinct.java @@ -5,7 +5,7 @@ package org.hibernate.query.sqm.tree.expression; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SemanticQueryWalker; import org.hibernate.query.sqm.tree.AbstractSqmNode; import org.hibernate.query.sqm.tree.SqmCopyContext; @@ -44,7 +44,7 @@ public SqmExpression getExpression() { } @Override - public SqmExpressible getNodeType() { + public SqmBindable getNodeType() { return expression.getNodeType(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmDurationUnit.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmDurationUnit.java index c8d06423b69a..da04d9129256 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmDurationUnit.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmDurationUnit.java @@ -8,7 +8,7 @@ import org.hibernate.query.common.TemporalUnit; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.AbstractSqmNode; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -46,7 +46,7 @@ public TemporalUnit getUnit() { } @Override - public SqmExpressible getNodeType() { + public SqmBindable getNodeType() { return nodeBuilder().resolveExpressible( type ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEnumLiteral.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEnumLiteral.java index ff86340d4bec..001cdeb74e4f 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEnumLiteral.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEnumLiteral.java @@ -12,7 +12,7 @@ import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.UnknownPathException; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -26,7 +26,7 @@ * * @author Steve Ebersole */ -public class SqmEnumLiteral> extends SqmLiteral implements SqmExpressible, SemanticPathPart { +public class SqmEnumLiteral> extends SqmLiteral implements SqmBindable, SemanticPathPart { private final E enumValue; private final EnumJavaType referencedEnumTypeDescriptor; private final String enumValueName; @@ -63,7 +63,7 @@ public SqmEnumLiteral copy(SqmCopyContext context) { } @Override - public SqmExpressible getExpressible() { + public SqmBindable getExpressible() { return this; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEvery.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEvery.java index 87d7a1665c88..28b41bf91e75 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEvery.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEvery.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.select.SqmSubQuery; @@ -26,7 +26,7 @@ public SqmEvery(SqmSubQuery subquery, NodeBuilder criteriaBuilder) { } @Override - public @Nullable SqmExpressible getNodeType() { + public @Nullable SqmBindable getNodeType() { return subquery.getNodeType(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpression.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpression.java index ba385526f4ba..8c22ed11e468 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpression.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpression.java @@ -17,7 +17,7 @@ import org.hibernate.query.criteria.JpaExpression; import org.hibernate.query.criteria.JpaPredicate; import org.hibernate.query.spi.QueryEngine; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.predicate.SqmPredicate; import org.hibernate.query.sqm.tree.select.SqmSelectableNode; @@ -40,7 +40,8 @@ public interface SqmExpression extends SqmSelectableNode, JpaExpression * Can change as a result of calls to {@link #applyInferableType} */ @Override - @Nullable SqmExpressible getNodeType(); + @Nullable + SqmBindable getNodeType(); /** * Used to apply type information based on the expression's usage @@ -51,7 +52,7 @@ public interface SqmExpression extends SqmSelectableNode, JpaExpression * an implicit cast) */ @Internal - void applyInferableType(@Nullable SqmExpressible type); + void applyInferableType(@Nullable SqmBindable type); @Override default void visitSubSelectableNodes(Consumer> jpaSelectionConsumer) { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpressionHelper.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpressionHelper.java index 726904a66ad3..0dc8d27d59f3 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpressionHelper.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpressionHelper.java @@ -11,6 +11,7 @@ import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.BinaryArithmeticOperator; import org.hibernate.query.sqm.NodeBuilder; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.tree.domain.SqmPath; import org.hibernate.type.descriptor.java.JavaTypeHelper; @@ -28,13 +29,13 @@ public static SqmExpressible toSqmType(BindableType parameterType, Sqm return toSqmType( parameterType, creationState.getCreationContext() ); } - public static SqmExpressible toSqmType( + public static SqmBindable toSqmType( BindableType anticipatedType, BindingContext bindingContext) { if ( anticipatedType == null ) { return null; } else { - final SqmExpressible sqmExpressible = bindingContext.resolveExpressible( anticipatedType ); + final SqmBindable sqmExpressible = bindingContext.resolveExpressible( anticipatedType ); assert sqmExpressible != null; return sqmExpressible; } @@ -92,8 +93,9 @@ public static SqmExpressible toSqmType( public static boolean isCompositeTemporal(SqmExpression expression) { // When TimeZoneStorageStrategy.COLUMN is used, that implies using a composite user type - return expression instanceof SqmPath && expression.getNodeType() instanceof EmbeddedSqmPathSource - && JavaTypeHelper.isTemporal( expression.getJavaTypeDescriptor() ); + return expression instanceof SqmPath path + && path.getReferencedPathSource() instanceof EmbeddedSqmPathSource + && JavaTypeHelper.isTemporal( expression.getJavaTypeDescriptor() ); } public static SqmExpression getActualExpression(SqmExpression expression) { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExtractUnit.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExtractUnit.java index 74c13e22c218..00adea41dc8f 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExtractUnit.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExtractUnit.java @@ -8,7 +8,7 @@ import org.hibernate.query.common.TemporalUnit; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.AbstractSqmNode; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -46,7 +46,7 @@ public X accept(SemanticQueryWalker walker) { } @Override - public SqmExpressible getNodeType() { + public SqmBindable getNodeType() { return nodeBuilder().resolveExpressible( type ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java index e7511e2f8f44..2787660b4317 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java @@ -17,7 +17,7 @@ import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.UnknownPathException; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -33,13 +33,13 @@ /** * @author Steve Ebersole */ -public class SqmFieldLiteral implements SqmExpression, SqmExpressible, SqmSelectableNode, SemanticPathPart { +public class SqmFieldLiteral implements SqmExpression, SqmBindable, SqmSelectableNode, SemanticPathPart { private final T value; private final JavaType fieldJavaType; private final String fieldName; private final NodeBuilder nodeBuilder; - private final SqmExpressible expressible; + private final SqmBindable expressible; public SqmFieldLiteral( Field field, @@ -106,12 +106,12 @@ public NodeBuilder getNodeBuilder() { } @Override - public SqmExpressible getNodeType() { + public SqmBindable getNodeType() { return expressible; } @Override - public void applyInferableType(@Nullable SqmExpressible type) { + public void applyInferableType(@Nullable SqmBindable type) { } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFormat.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFormat.java index 3b3b3c3e3710..fdd3da5f61c6 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFormat.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFormat.java @@ -9,7 +9,7 @@ import org.hibernate.query.SemanticException; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -43,7 +43,7 @@ public class SqmFormat extends SqmLiteral { public SqmFormat( String value, - SqmExpressible inherentType, + SqmBindable inherentType, NodeBuilder nodeBuilder) { super(value, inherentType, nodeBuilder); if (!FORMAT.matcher(value).matches()) { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFunction.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFunction.java index c8117e8eca0a..8d2692587602 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFunction.java @@ -11,7 +11,7 @@ import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.function.SqmFunctionDescriptor; import org.hibernate.query.sqm.sql.SqmToSqlAstConverter; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -39,7 +39,7 @@ public abstract class SqmFunction extends AbstractSqmExpression public SqmFunction( String functionName, SqmFunctionDescriptor functionDescriptor, - @Nullable SqmExpressible type, + @Nullable SqmBindable type, List> arguments, NodeBuilder criteriaBuilder) { super( type, criteriaBuilder ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonNullBehavior.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonNullBehavior.java index aa64251342de..4e6075592cf4 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonNullBehavior.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonNullBehavior.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.SqmTypedNode; @@ -30,7 +30,7 @@ public enum SqmJsonNullBehavior implements SqmTypedNode { NULL; @Override - public @Nullable SqmExpressible getNodeType() { + public @Nullable SqmBindable getNodeType() { return null; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonObjectAggUniqueKeysBehavior.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonObjectAggUniqueKeysBehavior.java index 70230c2331db..a0c55475445f 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonObjectAggUniqueKeysBehavior.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonObjectAggUniqueKeysBehavior.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.SqmTypedNode; @@ -30,7 +30,7 @@ public enum SqmJsonObjectAggUniqueKeysBehavior implements SqmTypedNode { WITHOUT; @Override - public @Nullable SqmExpressible getNodeType() { + public @Nullable SqmBindable getNodeType() { return null; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonTableFunction.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonTableFunction.java index 261e787673ef..42170d1622b3 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonTableFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonTableFunction.java @@ -14,6 +14,7 @@ import org.hibernate.query.criteria.JpaJsonTableColumnsNode; import org.hibernate.query.criteria.JpaJsonTableFunction; import org.hibernate.query.criteria.JpaJsonValueNode; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tuple.internal.AnonymousTupleType; import org.hibernate.query.sqm.NodeBuilder; @@ -961,7 +962,7 @@ public AnonymousTupleType createTupleType() { if ( table.columnNames.isEmpty() ) { throw new IllegalArgumentException( "Couldn't determine types of columns of function 'json_table'" ); } - final SqmExpressible[] componentTypes = new SqmExpressible[table.columnNames.size()]; + final SqmBindable[] componentTypes = new SqmBindable[table.columnNames.size()]; final String[] componentNames = new String[table.columnNames.size()]; int result = populateTupleType( 0, componentNames, componentTypes ); @@ -981,7 +982,7 @@ public Columns copy(SqmCopyContext context) { } @Override - public @Nullable SqmExpressible getNodeType() { + public @Nullable SqmBindable getNodeType() { return null; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteral.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteral.java index ff8fb72e80f0..adc504be2824 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteral.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteral.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.type.descriptor.java.JavaType; @@ -29,7 +29,7 @@ public class SqmLiteral extends AbstractSqmExpression { private final T value; - public SqmLiteral(T value, SqmExpressible inherentType, NodeBuilder nodeBuilder) { + public SqmLiteral(T value, SqmBindable inherentType, NodeBuilder nodeBuilder) { super( inherentType, nodeBuilder ); assert value != null; assert inherentType == null @@ -37,7 +37,7 @@ public SqmLiteral(T value, SqmExpressible inherentType, NodeBuilder n this.value = value; } - protected SqmLiteral(SqmExpressible inherentType, NodeBuilder nodeBuilder) { + protected SqmLiteral(SqmBindable inherentType, NodeBuilder nodeBuilder) { super( inherentType, nodeBuilder ); this.value = null; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralEmbeddableType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralEmbeddableType.java index 1c5f2a7de197..0524650628c0 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralEmbeddableType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralEmbeddableType.java @@ -10,7 +10,7 @@ import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.domain.SqmPath; @@ -54,7 +54,7 @@ public SqmLiteralEmbeddableType copy(SqmCopyContext context) { } @Override - public void internalApplyInferableType(SqmExpressible type) { + public void internalApplyInferableType(SqmBindable type) { } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralEntityType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralEntityType.java index 93c80c3df705..4a4e8a411495 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralEntityType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralEntityType.java @@ -9,7 +9,7 @@ import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.domain.SqmPath; @@ -56,7 +56,7 @@ public SqmEntityDomainType getNodeType() { } @Override - public void internalApplyInferableType(SqmExpressible type) { + public void internalApplyInferableType(SqmBindable type) { } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralNull.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralNull.java index 5662bf215e8d..2f2f90f6ec93 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralNull.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralNull.java @@ -5,7 +5,7 @@ package org.hibernate.query.sqm.tree.expression; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SemanticQueryWalker; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -15,14 +15,14 @@ */ public class SqmLiteralNull extends SqmLiteral { - private static final SqmExpressible NULL_TYPE = NullSqmExpressible.NULL_SQM_EXPRESSIBLE; + private static final SqmBindable NULL_TYPE = NullSqmExpressible.NULL_SQM_EXPRESSIBLE; public SqmLiteralNull(NodeBuilder nodeBuilder) { //noinspection unchecked - this( (SqmExpressible) NULL_TYPE, nodeBuilder ); + this( (SqmBindable) NULL_TYPE, nodeBuilder ); } - public SqmLiteralNull(SqmExpressible expressibleType, NodeBuilder nodeBuilder) { + public SqmLiteralNull(SqmBindable expressibleType, NodeBuilder nodeBuilder) { super( expressibleType, nodeBuilder ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmModifiedSubQueryExpression.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmModifiedSubQueryExpression.java index 3525e679e501..13c41dbbcda1 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmModifiedSubQueryExpression.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmModifiedSubQueryExpression.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.select.SqmSubQuery; @@ -42,7 +42,7 @@ public SqmModifiedSubQueryExpression( public SqmModifiedSubQueryExpression( SqmSubQuery subQuery, Modifier modifier, - SqmExpressible resultType, + SqmBindable resultType, NodeBuilder builder) { super( resultType, builder ); this.subQuery = subQuery; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmNamedParameter.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmNamedParameter.java index fd3bfd3d1c8e..014393dbceea 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmNamedParameter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmNamedParameter.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -25,7 +25,7 @@ public SqmNamedParameter(String name, boolean canBeMultiValued, NodeBuilder node public SqmNamedParameter( String name, boolean canBeMultiValued, - SqmExpressible inherentType, + SqmBindable inherentType, NodeBuilder nodeBuilder) { super( canBeMultiValued, inherentType, nodeBuilder ); this.name = name; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmOver.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmOver.java index d89b0bb4704b..cda4c46acd90 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmOver.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmOver.java @@ -10,7 +10,7 @@ import org.hibernate.query.common.FrameKind; import org.hibernate.query.common.FrameMode; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.select.SqmSortSpecification; @@ -87,7 +87,7 @@ public SqmWindow getWindow() { } @Override - public @Nullable SqmExpressible getNodeType() { + public @Nullable SqmBindable getNodeType() { return expression.getNodeType(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmParameterizedEntityType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmParameterizedEntityType.java index 91f348058ac3..1c995217fe73 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmParameterizedEntityType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmParameterizedEntityType.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.select.SqmSelectableNode; @@ -46,10 +46,8 @@ public SqmParameterizedEntityType copy(SqmCopyContext context) { } @Override - public void internalApplyInferableType(SqmExpressible type) { + public void internalApplyInferableType(SqmBindable type) { setExpressibleType( type ); - - //noinspection unchecked discriminatorSource.applyInferableType( type ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmPositionalParameter.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmPositionalParameter.java index c78bcc0bc0cf..6a9da76f1a80 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmPositionalParameter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmPositionalParameter.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -28,7 +28,7 @@ public SqmPositionalParameter( public SqmPositionalParameter( int position, boolean canBeMultiValued, - SqmExpressible expressibleType, + SqmBindable expressibleType, NodeBuilder nodeBuilder) { super( canBeMultiValued, expressibleType, nodeBuilder ); this.position = position; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmSelfRenderingExpression.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmSelfRenderingExpression.java index a588469bebea..83170065c388 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmSelfRenderingExpression.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmSelfRenderingExpression.java @@ -8,7 +8,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.sql.ast.tree.expression.Expression; @@ -21,7 +21,7 @@ public class SqmSelfRenderingExpression extends AbstractSqmExpression { public SqmSelfRenderingExpression( Function renderer, - SqmExpressible type, + SqmBindable type, NodeBuilder criteriaBuilder) { super( type, criteriaBuilder ); this.renderer = renderer; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmTrimSpecification.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmTrimSpecification.java index dfa0a69e9984..0a8284deb9c4 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmTrimSpecification.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmTrimSpecification.java @@ -4,9 +4,9 @@ */ package org.hibernate.query.sqm.tree.expression; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.TrimSpec; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.SemanticQueryWalker; import org.hibernate.query.sqm.tree.AbstractSqmNode; import org.hibernate.query.sqm.tree.SqmCopyContext; @@ -47,7 +47,7 @@ public String asLoggableText() { } @Override - public SqmExpressible getNodeType() { + public SqmBindable getNodeType() { return null; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmTuple.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmTuple.java index 9cf74d74c824..161152541859 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmTuple.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmTuple.java @@ -13,7 +13,7 @@ import org.hibernate.query.criteria.JpaSelection; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.select.SqmJpaCompoundSelection; @@ -37,7 +37,7 @@ public SqmTuple(NodeBuilder nodeBuilder, SqmExpression... groupedExpressions) this( Arrays.asList( groupedExpressions ), nodeBuilder ); } - public SqmTuple(NodeBuilder nodeBuilder, SqmExpressible type, SqmExpression... groupedExpressions) { + public SqmTuple(NodeBuilder nodeBuilder, SqmBindable type, SqmExpression... groupedExpressions) { this( Arrays.asList( groupedExpressions ), type, nodeBuilder ); } @@ -45,7 +45,7 @@ public SqmTuple(List> groupedExpressions, NodeBuilder nodeBuild this( groupedExpressions, null, nodeBuilder ); } - public SqmTuple(List> groupedExpressions, SqmExpressible type, NodeBuilder nodeBuilder) { + public SqmTuple(List> groupedExpressions, SqmBindable type, NodeBuilder nodeBuilder) { super( type, nodeBuilder ); if ( groupedExpressions.isEmpty() ) { throw new SemanticException( "Tuple constructor must have at least one element" ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmUnaryOperation.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmUnaryOperation.java index d468a9e85872..f0ba646d71b1 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmUnaryOperation.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmUnaryOperation.java @@ -5,7 +5,7 @@ package org.hibernate.query.sqm.tree.expression; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.UnaryArithmeticOperator; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -31,7 +31,7 @@ public SqmUnaryOperation(UnaryArithmeticOperator operation, SqmExpression ope public SqmUnaryOperation( UnaryArithmeticOperator operation, SqmExpression operand, - SqmExpressible inherentType) { + SqmBindable inherentType) { super( inherentType, operand.nodeBuilder() ); this.operation = operation; this.operand = operand; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmXmlAttributesExpression.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmXmlAttributesExpression.java index 983b7cd42222..c16b31f911be 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmXmlAttributesExpression.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmXmlAttributesExpression.java @@ -10,7 +10,7 @@ import org.hibernate.Incubating; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.SqmTypedNode; @@ -48,7 +48,7 @@ public Map> getAttributes() { } @Override - public @Nullable SqmExpressible getNodeType() { + public @Nullable SqmBindable getNodeType() { return null; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmXmlTableFunction.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmXmlTableFunction.java index b7e9436cf007..57b2717d4bd6 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmXmlTableFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmXmlTableFunction.java @@ -10,6 +10,7 @@ import org.hibernate.query.criteria.JpaCastTarget; import org.hibernate.query.criteria.JpaXmlTableColumnNode; import org.hibernate.query.criteria.JpaXmlTableFunction; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tuple.internal.AnonymousTupleType; import org.hibernate.query.sqm.NodeBuilder; @@ -415,7 +416,7 @@ public AnonymousTupleType createTupleType() { if ( columnDefinitions.isEmpty() ) { throw new IllegalArgumentException( "Couldn't determine types of columns of function 'xmltable'" ); } - final SqmExpressible[] componentTypes = new SqmExpressible[columnDefinitions.size()]; + final SqmBindable[] componentTypes = new SqmBindable[columnDefinitions.size()]; final String[] componentNames = new String[columnDefinitions.size()]; int offset = 0; for ( ColumnDefinition columnDefinition : columnDefinitions ) { @@ -456,7 +457,7 @@ public void appendHqlString(StringBuilder hql, SqmRenderContext context) { } @Override - public @Nullable SqmExpressible getNodeType() { + public @Nullable SqmBindable getNodeType() { return null; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/ValueBindJpaCriteriaParameter.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/ValueBindJpaCriteriaParameter.java index 201f8273c756..63069c9750b8 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/ValueBindJpaCriteriaParameter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/ValueBindJpaCriteriaParameter.java @@ -6,7 +6,7 @@ import org.hibernate.query.BindableType; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -21,9 +21,9 @@ public class ValueBindJpaCriteriaParameter extends JpaCriteriaParameter { public ValueBindJpaCriteriaParameter(BindableType type, T value, NodeBuilder nodeBuilder) { super( null, type, false, nodeBuilder ); assert value == null || type == null - || ( type instanceof SqmExpressible expressible + || ( type instanceof SqmBindable bindable // TODO: why does SqmExpressible.getBindableJavaType() return an apparently-wrong type? - ? expressible.getExpressibleJavaType().isInstance( value ) + ? bindable.getExpressibleJavaType().isInstance( value ) : type.getBindableJavaType().isInstance( value ) ); this.value = value; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/AbstractJpaSelection.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/AbstractJpaSelection.java index 7441af51c820..239fdcab39b3 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/AbstractJpaSelection.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/AbstractJpaSelection.java @@ -8,7 +8,7 @@ import org.hibernate.query.criteria.JpaSelection; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.select.SqmSelectableNode; import org.checkerframework.checker.nullness.qual.Nullable; @@ -21,7 +21,7 @@ public abstract class AbstractJpaSelection extends AbstractJpaTupleElement implements SqmSelectableNode, JpaSelection { - protected AbstractJpaSelection(@Nullable SqmExpressible sqmExpressible, NodeBuilder criteriaBuilder) { + protected AbstractJpaSelection(@Nullable SqmBindable sqmExpressible, NodeBuilder criteriaBuilder) { super( sqmExpressible, criteriaBuilder ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/AbstractJpaTupleElement.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/AbstractJpaTupleElement.java index 0f6ea082fce6..2931ae2eb621 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/AbstractJpaTupleElement.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/AbstractJpaTupleElement.java @@ -6,7 +6,7 @@ import org.hibernate.query.criteria.JpaTupleElement; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.AbstractSqmNode; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmVisitableNode; @@ -22,10 +22,10 @@ public abstract class AbstractJpaTupleElement extends AbstractSqmNode implements SqmVisitableNode, JpaTupleElement { - private @Nullable SqmExpressible expressibleType; + private @Nullable SqmBindable expressibleType; private @Nullable String alias; - protected AbstractJpaTupleElement(@Nullable SqmExpressible expressibleType, NodeBuilder criteriaBuilder) { + protected AbstractJpaTupleElement(@Nullable SqmBindable expressibleType, NodeBuilder criteriaBuilder) { super( criteriaBuilder ); setExpressibleType( expressibleType ); } @@ -46,13 +46,13 @@ protected void setAlias(@Nullable String alias) { this.alias = alias; } - public @Nullable SqmExpressible getNodeType() { + public @Nullable SqmBindable getNodeType() { return expressibleType; } - protected final void setExpressibleType(@Nullable SqmExpressible expressibleType) { + protected final void setExpressibleType(@Nullable SqmBindable expressibleType) { //noinspection unchecked - this.expressibleType = (SqmExpressible) expressibleType; + this.expressibleType = (SqmBindable) expressibleType; } } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/ParameterCollector.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/ParameterCollector.java index 5a75d7f3c74d..9c9afeb742ba 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/ParameterCollector.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/ParameterCollector.java @@ -10,7 +10,7 @@ import java.util.function.Consumer; import org.hibernate.query.BindableType; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.spi.BaseSemanticQueryWalker; import org.hibernate.query.sqm.tree.SqmExpressibleAccessor; @@ -118,7 +118,7 @@ public Object visitSetReturningFunction(SqmSetReturningFunction sqmFunction) private BindableType getInferredParameterType(JpaCriteriaParameter expression) { BindableType parameterType = null; if ( inferenceBasis != null ) { - final SqmExpressible expressible = inferenceBasis.getExpressible(); + final SqmBindable expressible = inferenceBasis.getExpressible(); if ( expressible != null ) { parameterType = expressible; } @@ -167,7 +167,7 @@ public Object visitSimpleCaseExpression(SqmCaseSimple expression) { withTypeInference( () -> { for ( var whenFragment : expression.getWhenFragments() ) { - final SqmExpressible resolved = whenFragment.getCheckValue().getExpressible(); + final SqmBindable resolved = whenFragment.getCheckValue().getExpressible(); if ( resolved != null ) { return resolved; } @@ -254,7 +254,7 @@ private SqmExpressibleAccessor highestPrecedence(SqmExpressibleAccessor ty } private SqmExpressibleAccessor toExpressibleAccessor(SqmExpression expression) { - final SqmExpressible expressible = expression.getExpressible(); + final SqmBindable expressible = expression.getExpressible(); return expressible == null ? null : () -> expressible; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/AbstractNegatableSqmPredicate.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/AbstractNegatableSqmPredicate.java index cca6b386f76e..a6c411c1c53b 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/AbstractNegatableSqmPredicate.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/AbstractNegatableSqmPredicate.java @@ -5,7 +5,7 @@ package org.hibernate.query.sqm.tree.predicate; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; /** * @author Steve Ebersole @@ -21,7 +21,7 @@ public AbstractNegatableSqmPredicate(boolean negated, NodeBuilder nodeBuilder) { this( nodeBuilder.getBooleanType(), negated, nodeBuilder ); } - public AbstractNegatableSqmPredicate(SqmExpressible type, boolean negated, NodeBuilder nodeBuilder) { + public AbstractNegatableSqmPredicate(SqmBindable type, boolean negated, NodeBuilder nodeBuilder) { super( type, nodeBuilder ); this.negated = negated; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/AbstractSqmPredicate.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/AbstractSqmPredicate.java index 2cb2793385db..a4584e4ef237 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/AbstractSqmPredicate.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/AbstractSqmPredicate.java @@ -8,7 +8,7 @@ import java.util.List; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.expression.AbstractSqmExpression; import jakarta.persistence.criteria.Expression; @@ -18,7 +18,7 @@ */ public abstract class AbstractSqmPredicate extends AbstractSqmExpression implements SqmPredicate { - public AbstractSqmPredicate(SqmExpressible type, NodeBuilder criteriaBuilder) { + public AbstractSqmPredicate(SqmBindable type, NodeBuilder criteriaBuilder) { super( type, criteriaBuilder ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmBetweenPredicate.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmBetweenPredicate.java index 779610718d5a..4fcfef59f9fd 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmBetweenPredicate.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmBetweenPredicate.java @@ -7,7 +7,7 @@ import org.hibernate.query.internal.QueryHelper; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.expression.SqmExpression; @@ -36,7 +36,7 @@ public SqmBetweenPredicate( assertComparable( expression, lowerBound, nodeBuilder ); assertComparable( expression, upperBound, nodeBuilder ); - final SqmExpressible expressibleType = QueryHelper.highestPrecedenceType( + final SqmBindable expressibleType = QueryHelper.highestPrecedenceType( expression.getExpressible(), lowerBound.getExpressible(), upperBound.getExpressible() diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmComparisonPredicate.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmComparisonPredicate.java index 86f6b4931756..7c74c4d55ad5 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmComparisonPredicate.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmComparisonPredicate.java @@ -7,7 +7,7 @@ import org.hibernate.query.sqm.ComparisonOperator; import org.hibernate.query.internal.QueryHelper; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SemanticQueryWalker; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -44,7 +44,7 @@ private SqmComparisonPredicate( assertComparable( leftHandExpression, rightHandExpression, nodeBuilder ); - final SqmExpressible expressibleType = QueryHelper.highestPrecedenceType( + final SqmBindable expressibleType = QueryHelper.highestPrecedenceType( leftHandExpression.getExpressible(), rightHandExpression.getExpressible() ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmInSubQueryPredicate.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmInSubQueryPredicate.java index e4e0b9b8b96e..951aa2e75e3c 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmInSubQueryPredicate.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmInSubQueryPredicate.java @@ -7,7 +7,7 @@ import org.hibernate.query.criteria.JpaExpression; import org.hibernate.query.internal.QueryHelper; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SemanticQueryWalker; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -43,7 +43,7 @@ public SqmInSubQueryPredicate( assertComparable( testExpression, subQueryExpression, nodeBuilder ); - final SqmExpressible expressibleType = QueryHelper.highestPrecedenceType2( + final SqmBindable expressibleType = QueryHelper.highestPrecedenceType2( testExpression.getExpressible(), subQueryExpression.getExpressible() ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmJunctionPredicate.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmJunctionPredicate.java index 418fc48399ed..c9b102b010e4 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmJunctionPredicate.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmJunctionPredicate.java @@ -9,7 +9,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import jakarta.persistence.criteria.Expression; @@ -24,7 +24,7 @@ public class SqmJunctionPredicate extends AbstractSqmPredicate { public SqmJunctionPredicate( BooleanOperator booleanOperator, - SqmExpressible expressible, + SqmBindable expressible, NodeBuilder nodeBuilder) { super( expressible, nodeBuilder ); this.booleanOperator = booleanOperator; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmLikePredicate.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmLikePredicate.java index e81663f7b3ef..e0550e92607f 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmLikePredicate.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmLikePredicate.java @@ -7,7 +7,7 @@ import org.hibernate.query.internal.QueryHelper; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.expression.SqmExpression; @@ -52,7 +52,7 @@ public SqmLikePredicate( this.pattern = pattern; this.escapeCharacter = escapeCharacter; this.isCaseSensitive = isCaseSensitive; - final SqmExpressible expressibleType = QueryHelper.highestPrecedenceType( + final SqmBindable expressibleType = QueryHelper.highestPrecedenceType( matchExpression.getExpressible(), pattern.getExpressible() ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmMemberOfPredicate.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmMemberOfPredicate.java index 91c955cee41c..0307436604f0 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmMemberOfPredicate.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmMemberOfPredicate.java @@ -8,7 +8,7 @@ import org.hibernate.query.SemanticException; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.domain.SqmPluralValuedSimplePath; @@ -38,7 +38,7 @@ public SqmMemberOfPredicate( this.leftHandExpression = leftHandExpression; final BindableType elementType = pluralPath.getPluralAttribute().getElementType(); - final SqmExpressible simpleDomainType = nodeBuilder.resolveExpressible( elementType ); + final SqmBindable simpleDomainType = nodeBuilder.resolveExpressible( elementType ); if ( !areTypesComparable( leftHandExpression.getNodeType(), simpleDomainType, nodeBuilder ) ) { throw new SemanticException( diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmAliasedNode.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmAliasedNode.java index eb46a9300dd7..292bc846f70e 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmAliasedNode.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmAliasedNode.java @@ -4,7 +4,7 @@ */ package org.hibernate.query.sqm.tree.select; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmTypedNode; import org.hibernate.query.sqm.sql.internal.DomainResultProducer; @@ -25,12 +25,12 @@ public interface SqmAliasedNode extends SqmTypedNode { String getAlias(); @Override - default SqmExpressible getNodeType() { + default SqmBindable getNodeType() { return getSelectableNode().getNodeType(); } @Override - default SqmExpressible getExpressible() { + default SqmBindable getExpressible() { return getSelectableNode().getExpressible(); } } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiation.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiation.java index 2c40219f9908..f7ecd88581d7 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiation.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiation.java @@ -13,6 +13,7 @@ import org.hibernate.query.criteria.JpaCompoundSelection; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -127,7 +128,7 @@ private SqmDynamicInstantiation( } private SqmDynamicInstantiation( - SqmExpressible sqmExpressible, + SqmBindable sqmExpressible, NodeBuilder criteriaBuilder, SqmDynamicInstantiationTarget instantiationTarget, List> arguments) { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiationTarget.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiationTarget.java index f2ef91888691..9f48484d4c73 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiationTarget.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiationTarget.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.DynamicInstantiationNature; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.type.descriptor.java.JavaType; /** @@ -15,7 +15,7 @@ * * @author Steve Ebersole */ -public interface SqmDynamicInstantiationTarget extends SqmExpressible { +public interface SqmDynamicInstantiationTarget extends SqmBindable { /** * Retrieves the enum describing the nature of this target. diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmJpaCompoundSelection.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmJpaCompoundSelection.java index 8dc32cb0012b..04b6b73f2c26 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmJpaCompoundSelection.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmJpaCompoundSelection.java @@ -12,7 +12,7 @@ import org.hibernate.query.criteria.JpaSelection; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.expression.AbstractSqmExpression; @@ -39,9 +39,9 @@ */ public class SqmJpaCompoundSelection extends AbstractSqmExpression - implements JpaCompoundSelection, SqmExpressible { + implements JpaCompoundSelection, SqmBindable { - // todo (6.0) : should this really be SqmExpressible? + // todo (6.0) : should this really be SqmBindable? // - seems like it ought to be limited to just `SqmSelectableNode`. // otherwise why the distinction? why not just just re-use the same // impl between this and `org.hibernate.query.sqm.tree.expression.SqmTuple`? diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmSubQuery.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmSubQuery.java index 08985ffba839..6baeac3f84d1 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmSubQuery.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmSubQuery.java @@ -27,7 +27,7 @@ import org.hibernate.query.common.FetchClauseType; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmExpressible; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmQuery; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -85,7 +85,7 @@ public class SqmSubQuery extends AbstractSqmSelectQuery implements SqmSelectQuery, JpaSubQuery, SqmExpression { private final SqmQuery parent; - private SqmExpressible expressibleType; + private SqmBindable expressibleType; private String alias; public SqmSubQuery( @@ -140,7 +140,7 @@ private SqmSubQuery( Map> cteStatements, Class resultType, SqmQuery parent, - SqmExpressible expressibleType, + SqmBindable expressibleType, String alias) { super( builder, cteStatements, resultType ); this.parent = parent; @@ -635,14 +635,14 @@ public SqmInPredicate in(Expression> values) { } @Override - public @Nullable SqmExpressible getNodeType() { + public @Nullable SqmBindable getNodeType() { return expressibleType; } @Override - public void applyInferableType(@Nullable SqmExpressible type) { + public void applyInferableType(@Nullable SqmBindable type) { //noinspection unchecked - expressibleType = (SqmExpressible) type; + expressibleType = (SqmBindable) type; } private void applyInferableType(Class type) { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/TupleType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/TupleType.java index 147515a998d3..6a29a9365237 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/TupleType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/TupleType.java @@ -6,6 +6,7 @@ import java.util.List; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmExpressible; /** @@ -19,6 +20,6 @@ public interface TupleType extends SqmExpressible { String getComponentName(int index); List getComponentNames(); - SqmExpressible get(int index); - SqmExpressible get(String componentName); + SqmBindable get(int index); + SqmBindable get(String componentName); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleSqmPathSource.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleSqmPathSource.java index b3485cb42283..a46c31038ce0 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleSqmPathSource.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleSqmPathSource.java @@ -43,14 +43,14 @@ public String getPathName() { @Override public SqmDomainType getPathType() { - return path.getNodeType().getPathType(); -// return (SqmDomainType) path.getReferencedPathSource().getPathType(); +// return path.getNodeType().getPathType(); + return path.getResolvedModel().getPathType(); } @Override public BindableType getBindableType() { - return path.getNodeType().getBindableType(); -// return path.getReferencedPathSource().getBindableType(); +// return path.getNodeType().getBindableType(); + return path.getResolvedModel().getBindableType(); } @Override @@ -60,14 +60,14 @@ public JavaType getExpressibleJavaType() { @Override public SqmPathSource findSubPathSource(String name) { - return path.getNodeType().findSubPathSource( name ); -// return path.getReferencedPathSource().findSubPathSource( name ); +// return path.getNodeType().findSubPathSource( name ); + return path.getReferencedPathSource().findSubPathSource( name ); } @Override public SqmPath createSqmPath(SqmPath lhs, SqmPathSource intermediatePathSource) { - final DomainType domainType = path.getNodeType().getPathType(); -// final DomainType domainType = path.getReferencedPathSource().getPathType(); +// final DomainType domainType = path.getNodeType().getPathType(); + final DomainType domainType = path.getReferencedPathSource().getPathType(); if ( domainType instanceof BasicDomainType ) { return new SqmBasicValuedSimplePath<>( PathHelper.append( lhs, this, intermediatePathSource ), diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java index 5cfd9c3b7989..b39e852141ed 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java @@ -9,13 +9,16 @@ import java.util.List; import java.util.Map; +import org.hibernate.AssertionFailure; import org.hibernate.Incubating; import org.hibernate.metamodel.UnsupportedMappingException; import org.hibernate.metamodel.mapping.CollectionPart; import org.hibernate.metamodel.mapping.JdbcMappingContainer; import org.hibernate.metamodel.mapping.SqlTypedMapping; import org.hibernate.metamodel.mapping.internal.SqlTypedMappingImpl; +import org.hibernate.metamodel.model.domain.BasicDomainType; import org.hibernate.metamodel.model.domain.SimpleDomainType; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.domain.SqmDomainType; import org.hibernate.query.sqm.tree.domain.SqmPluralPersistentAttribute; @@ -30,7 +33,6 @@ import org.hibernate.spi.NavigablePath; import org.hibernate.sql.ast.spi.FromClauseAccess; import org.hibernate.sql.ast.spi.SqlSelection; -import org.hibernate.type.BasicType; import org.hibernate.type.descriptor.java.JavaType; import org.hibernate.type.descriptor.java.ObjectArrayJavaType; @@ -48,7 +50,7 @@ public class AnonymousTupleType private final JavaType javaTypeDescriptor; private final @Nullable NavigablePath[] componentSourcePaths; - private final SqmExpressible[] expressibles; + private final SqmBindable[] expressibles; private final String[] componentNames; private final Map componentIndexMap; @@ -57,7 +59,7 @@ public AnonymousTupleType(SqmSubQuery subQuery) { } public AnonymousTupleType(SqmSelectableNode[] components) { - expressibles = new SqmExpressible[components.length]; + expressibles = new SqmBindable[components.length]; componentSourcePaths = new NavigablePath[components.length]; for ( int i = 0; i < components.length; i++ ) { expressibles[i] = components[i].getNodeType(); @@ -81,7 +83,7 @@ public AnonymousTupleType(SqmSelectableNode[] components) { } } - public AnonymousTupleType(SqmExpressible[] expressibles, String[] componentNames) { + public AnonymousTupleType(SqmBindable[] expressibles, String[] componentNames) { this.expressibles = expressibles; this.componentNames = componentNames; @@ -175,12 +177,12 @@ public List getComponentNames() { } @Override - public SqmExpressible get(int index) { + public SqmBindable get(int index) { return expressibles[index]; } @Override - public SqmExpressible get(String componentName) { + public SqmBindable get(String componentName) { final Integer index = componentIndexMap.get( componentName ); return index == null ? null : expressibles[index]; } @@ -209,14 +211,15 @@ private static SqmPathSource subpathSource(String name, SqmExpressible pluralAttribute.getElementType() ); } - else if ( sqmType instanceof BasicType ) { + else if ( sqmType instanceof BasicDomainType ) { return new AnonymousTupleSimpleSqmPathSource<>( name, sqmType, BindableType.SINGULAR_ATTRIBUTE ); } - else { + // TODO: introduce SqmSimpleDomainType to get rid of unchecked cast + else if ( sqmType instanceof SimpleDomainType ) { return new AnonymousTupleSqmAssociationPathSourceNew<>( name, (SqmPathSource) expressible, @@ -224,6 +227,9 @@ else if ( sqmType instanceof BasicType ) { (SimpleDomainType) sqmType ); } + else { + throw new AssertionFailure( "Unsupported domain type " + sqmType ); + } } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java b/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java index 26f2897aee6b..057ca2da6d50 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java +++ b/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java @@ -8,8 +8,8 @@ import org.hibernate.query.spi.BindableTypeImplementor; import org.hibernate.query.spi.BindingContext; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.type.descriptor.converter.spi.BasicValueConverter; -import org.hibernate.query.sqm.SqmExpressible; /** * A basic type reference. @@ -83,7 +83,7 @@ public BasicTypeReference asImmutable() { } @Override - public SqmExpressible resolveExpressible(BindingContext bindingContext) { + public SqmBindable resolveExpressible(BindingContext bindingContext) { return bindingContext.getTypeConfiguration().getBasicTypeRegistry().resolve( this ); } } diff --git a/hibernate-core/src/main/java/org/hibernate/type/internal/CustomMutabilityConvertedBasicTypeImpl.java b/hibernate-core/src/main/java/org/hibernate/type/internal/CustomMutabilityConvertedBasicTypeImpl.java index d93805b82b1c..c69f405d0118 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/internal/CustomMutabilityConvertedBasicTypeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/type/internal/CustomMutabilityConvertedBasicTypeImpl.java @@ -5,6 +5,7 @@ package org.hibernate.type.internal; import org.hibernate.type.descriptor.converter.spi.BasicValueConverter; +import org.hibernate.type.descriptor.java.JavaType; import org.hibernate.type.descriptor.java.MutabilityPlan; import org.hibernate.type.descriptor.jdbc.JdbcType; @@ -38,4 +39,9 @@ public CustomMutabilityConvertedBasicTypeImpl( protected MutabilityPlan getMutabilityPlan() { return mutabilityPlan; } + + @Override + public JavaType getRelationalJavaType() { + return getValueConverter().getRelationalJavaType(); + } } diff --git a/hibernate-core/src/main/java/org/hibernate/type/spi/TypeConfiguration.java b/hibernate-core/src/main/java/org/hibernate/type/spi/TypeConfiguration.java index 6ab9fffb9311..5614af894423 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/spi/TypeConfiguration.java +++ b/hibernate-core/src/main/java/org/hibernate/type/spi/TypeConfiguration.java @@ -37,6 +37,7 @@ import org.hibernate.Internal; import org.hibernate.SessionFactory; import org.hibernate.SessionFactoryObserver; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.type.TimeZoneStorageStrategy; import org.hibernate.boot.cfgxml.spi.CfgXmlAccessService; import org.hibernate.boot.registry.classloading.spi.ClassLoaderService; @@ -638,11 +639,11 @@ private Class entityClassForEntityName(String entityName) { private final ConcurrentMap arrayTuples = new ConcurrentHashMap<>(); - public SqmExpressible resolveTupleType(List> typedNodes) { - final SqmExpressible[] components = new SqmExpressible[typedNodes.size()]; + public SqmBindable resolveTupleType(List> typedNodes) { + final SqmBindable[] components = new SqmBindable[typedNodes.size()]; for ( int i = 0; i < typedNodes.size(); i++ ) { final SqmTypedNode tupleElement = typedNodes.get(i); - final SqmExpressible sqmExpressible = tupleElement.getNodeType(); + final SqmBindable sqmExpressible = tupleElement.getNodeType(); // keep null value for Named Parameters if ( tupleElement instanceof SqmParameter && sqmExpressible == null ) { components[i] = QueryParameterJavaObjectType.INSTANCE; @@ -658,9 +659,9 @@ public SqmExpressible resolveTupleType(List> typedN } private static class ArrayCacheKey { - final SqmExpressible[] components; + final SqmBindable[] components; - public ArrayCacheKey(SqmExpressible[] components) { + public ArrayCacheKey(SqmBindable[] components) { this.components = components; } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/annotations/type/dynamicparameterized/DynamicParameterizedTypeTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/annotations/type/dynamicparameterized/DynamicParameterizedTypeTest.java index e9170b0d53ae..f19c67f149b6 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/annotations/type/dynamicparameterized/DynamicParameterizedTypeTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/annotations/type/dynamicparameterized/DynamicParameterizedTypeTest.java @@ -7,7 +7,6 @@ import org.hibernate.boot.model.FunctionContributions; import org.hibernate.boot.model.FunctionContributor; import org.hibernate.metamodel.mapping.BasicValuedMapping; -import org.hibernate.metamodel.model.domain.PathSource; import org.hibernate.persister.entity.EntityPersister; import org.hibernate.metamodel.model.domain.ReturnableType; import org.hibernate.query.sqm.produce.function.FunctionReturnTypeResolver; @@ -122,9 +121,7 @@ public ReturnableType resolveFunctionReturnType( @Nullable SqmToSqlAstConverter converter, List> arguments, TypeConfiguration typeConfiguration) { - SqmTypedNode sqmTypedNode = arguments.get(0); - var sqmPathType = ((PathSource) sqmTypedNode.getNodeType()).getPathType(); - assertInstanceOf(CustomType.class, sqmPathType); + assertInstanceOf(CustomType.class, arguments.get(0).getNodeType()); return null; } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/hql/ASTParserLoadingTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/hql/ASTParserLoadingTest.java index 1bf0e275db38..efc3c41881eb 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/hql/ASTParserLoadingTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/hql/ASTParserLoadingTest.java @@ -24,8 +24,8 @@ import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.internal.util.StringHelper; import org.hibernate.loader.MultipleBagFetchException; +import org.hibernate.metamodel.model.domain.EmbeddableDomainType; import org.hibernate.metamodel.model.domain.EntityDomainType; -import org.hibernate.metamodel.model.domain.internal.EmbeddedSqmPathSource; import org.hibernate.metamodel.model.domain.internal.EntitySqmPathSource; import org.hibernate.orm.test.any.xml.IntegerPropertyValue; import org.hibernate.orm.test.any.xml.PropertySet; @@ -1460,7 +1460,7 @@ public void testComponentQueries(SessionFactoryScope scope) { final SqmSelection selection = sqmStatement.getQuerySpec().getSelectClause().getSelections() .get( 0 ); final SqmExpressible selectionType = selection.getSelectableNode().getNodeType(); - assertThat( selectionType ).isInstanceOf( EmbeddedSqmPathSource.class ); + assertThat( selectionType ).isInstanceOf( EmbeddableDomainType.class ); assertThat( selection.getNodeJavaType().getJavaTypeClass() ).isEqualTo( Name.class ); diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/mapping/basic/TimeZoneColumnDurationTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/mapping/basic/TimeZoneColumnDurationTest.java new file mode 100644 index 000000000000..9aa6fe07a391 --- /dev/null +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/mapping/basic/TimeZoneColumnDurationTest.java @@ -0,0 +1,58 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.orm.test.mapping.basic; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import org.hibernate.annotations.TimeZoneColumn; +import org.hibernate.annotations.TimeZoneStorage; +import org.hibernate.annotations.TimeZoneStorageType; +import org.hibernate.testing.orm.junit.EntityManagerFactoryScope; +import org.hibernate.testing.orm.junit.Jpa; +import org.junit.jupiter.api.Test; + +import java.time.Duration; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +@Jpa(annotatedClasses = TimeZoneColumnDurationTest.EntityWithDateTimes.class) +class TimeZoneColumnDurationTest { + @Test void test(EntityManagerFactoryScope scope) { + scope.inTransaction( session -> { + EntityWithDateTimes entityWithDateTimes = new EntityWithDateTimes(); + entityWithDateTimes.dateTime1 = OffsetDateTime.of(2000,2, 1, 3, 15, 0, 0, ZoneOffset.UTC ); + entityWithDateTimes.dateTime2 = OffsetDateTime.of(2000,2, 1, 3, 45, 0, 0, ZoneOffset.ofHours( 5 ) ); + session.persist( entityWithDateTimes ); + + assertEquals( Duration.ofHours( 4 ).plus( Duration.ofMinutes( 30 ) ), + session.createQuery( "select dateTime1 - dateTime2 from EntityWithDateTimes", Duration.class ).getSingleResult() ); + assertEquals(270, (long) session.createQuery( "select (dateTime1 - dateTime2) by minute from EntityWithDateTimes", long.class ).getSingleResult() ); + assertEquals( OffsetDateTime.of(2000,2, 1, 4, 15, 0, 0, ZoneOffset.UTC ), + session.createQuery( "select dateTime1 + 1 hour from EntityWithDateTimes", OffsetDateTime.class ).getSingleResult() ); + assertEquals( OffsetDateTime.of(2000,2, 1, 4, 0, 0, 0, ZoneOffset.ofHours( 5 ) ), + session.createQuery( "select dateTime2 + 15 minute from EntityWithDateTimes", OffsetDateTime.class ).getSingleResult() ); + assertEquals( entityWithDateTimes.dateTime1, session.createQuery( "select dateTime1 from EntityWithDateTimes" ).getSingleResult() ); + assertEquals( entityWithDateTimes.dateTime2, session.createQuery( "select dateTime2 from EntityWithDateTimes" ).getSingleResult() ); + } ); + } + + @Entity(name = "EntityWithDateTimes") + static class EntityWithDateTimes { + @Id long id; + + @TimeZoneStorage(TimeZoneStorageType.COLUMN) + @TimeZoneColumn(name = "offset1") + @Column(name = "datetime1") + OffsetDateTime dateTime1; + + @TimeZoneStorage(TimeZoneStorageType.COLUMN) + @TimeZoneColumn(name = "offset2") + @Column(name = "datetime2") + OffsetDateTime dateTime2; + } +} diff --git a/tooling/metamodel-generator/src/main/java/org/hibernate/processor/validation/Validation.java b/tooling/metamodel-generator/src/main/java/org/hibernate/processor/validation/Validation.java index c733ea364b34..e46d4e73cf2d 100644 --- a/tooling/metamodel-generator/src/main/java/org/hibernate/processor/validation/Validation.java +++ b/tooling/metamodel-generator/src/main/java/org/hibernate/processor/validation/Validation.java @@ -71,7 +71,7 @@ public interface Handler extends ANTLRErrorListener { } } catch (Exception e) { - e.printStackTrace(); +// e.printStackTrace(); } return null; } From 64370d52b2bc27e7b3e1771c0e1dd50352bae040 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Mon, 12 May 2025 03:22:10 +0200 Subject: [PATCH 4/9] HHH-19449 have BindableType inherit JPA's Type --- .../model/domain/SimpleDomainType.java | 2 +- .../model/domain/internal/ArrayTupleType.java | 2 +- .../model/domain/internal/BasicTypeImpl.java | 2 +- .../org/hibernate/query/BindableType.java | 8 ++++- .../query/criteria/JpaTupleElement.java | 6 ++-- .../internal/SelectionSpecificationImpl.java | 4 +-- .../org/hibernate/query/sqm/SqmBindable.java | 4 ++- .../hibernate/query/sqm/SqmExpressible.java | 2 +- .../sqm/internal/SqmCriteriaNodeBuilder.java | 5 +++ .../hibernate/query/sqm/internal/SqmUtil.java | 29 ++++++++++------- .../tree/domain/SqmBasicValuedSimplePath.java | 5 +++ .../query/sqm/tree/domain/SqmDomainType.java | 3 ++ .../domain/SqmEmbeddedValuedSimplePath.java | 5 +++ .../sqm/tree/domain/SqmManagedDomainType.java | 5 +++ .../sqm/tree/domain/SqmMapEntryReference.java | 11 +++++++ .../tree/expression/NullSqmExpressible.java | 5 +++ .../sqm/tree/expression/SqmEnumLiteral.java | 10 ++++++ .../sqm/tree/expression/SqmFieldLiteral.java | 13 +++++++- .../sqm/tree/expression/SqmLiteralNull.java | 4 +-- .../tree/select/SqmDynamicInstantiation.java | 21 +++++++----- .../select/SqmDynamicInstantiationTarget.java | 4 +-- .../tree/select/SqmJpaCompoundSelection.java | 32 +++++-------------- .../query/sqm/tree/select/SqmSelection.java | 7 ++++ .../type/AbstractStandardBasicType.java | 2 +- .../java/org/hibernate/type/BasicType.java | 5 +++ .../hibernate/type/BasicTypeReference.java | 5 +++ .../org/hibernate/type/ComponentType.java | 5 +++ .../type/internal/ConvertedBasicTypeImpl.java | 2 +- 28 files changed, 146 insertions(+), 62 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/SimpleDomainType.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/SimpleDomainType.java index ab6a45b58f0d..f7bffb802060 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/SimpleDomainType.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/SimpleDomainType.java @@ -12,7 +12,7 @@ * @author Steve Ebersole */ public interface SimpleDomainType - extends DomainType, BindableType, jakarta.persistence.metamodel.Type { + extends DomainType, BindableType { @Override default Class getBindableJavaType() { return getJavaType(); diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java index 44e9bb6a68a5..4d447e742557 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java @@ -91,7 +91,7 @@ public PersistenceType getPersistenceType() { @Override public Class getJavaType() { - return this.getExpressibleJavaType().getJavaTypeClass(); + return getExpressibleJavaType().getJavaTypeClass(); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicTypeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicTypeImpl.java index f217e59f6726..c2abc30de60e 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicTypeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicTypeImpl.java @@ -46,7 +46,7 @@ public JavaType getExpressibleJavaType() { @Override public Class getJavaType() { - return this.getExpressibleJavaType().getJavaTypeClass(); + return getExpressibleJavaType().getJavaTypeClass(); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/BindableType.java b/hibernate-core/src/main/java/org/hibernate/query/BindableType.java index 8eedaed3c173..2acffa3507b1 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/BindableType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/BindableType.java @@ -4,6 +4,7 @@ */ package org.hibernate.query; +import jakarta.persistence.metamodel.Type; import org.hibernate.Incubating; /** @@ -21,9 +22,14 @@ * @author Steve Ebersole */ @Incubating -public interface BindableType { +public interface BindableType extends Type { /** * The expected Java type of the argument to the query parameter. */ Class getBindableJavaType(); + + @Override + default Class getJavaType() { + return getBindableJavaType(); + } } diff --git a/hibernate-core/src/main/java/org/hibernate/query/criteria/JpaTupleElement.java b/hibernate-core/src/main/java/org/hibernate/query/criteria/JpaTupleElement.java index a0c30fa8d85c..fad915c1f2cf 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/criteria/JpaTupleElement.java +++ b/hibernate-core/src/main/java/org/hibernate/query/criteria/JpaTupleElement.java @@ -21,11 +21,13 @@ public interface JpaTupleElement extends TupleElement, JpaCriteriaNode { @Override default @Nullable Class getJavaType() { // todo (6.0) : can this signature just return `Class`? - return getJavaTypeDescriptor() == null ? null : getJavaTypeDescriptor().getJavaTypeClass(); + final JavaType javaType = getJavaTypeDescriptor(); + return javaType == null ? null : javaType.getJavaTypeClass(); } default String getJavaTypeName() { - return getJavaTypeDescriptor() == null ? null : getJavaTypeDescriptor().getTypeName(); + final JavaType javaType = getJavaTypeDescriptor(); + return javaType == null ? null : javaType.getTypeName(); } default boolean isEnum() { diff --git a/hibernate-core/src/main/java/org/hibernate/query/specification/internal/SelectionSpecificationImpl.java b/hibernate-core/src/main/java/org/hibernate/query/specification/internal/SelectionSpecificationImpl.java index 25dc2155879d..5cdd424dc8ea 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/specification/internal/SelectionSpecificationImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/query/specification/internal/SelectionSpecificationImpl.java @@ -14,7 +14,6 @@ import org.hibernate.SharedSessionContract; import org.hibernate.StatelessSession; import org.hibernate.engine.spi.SharedSessionContractImplementor; -import org.hibernate.internal.util.collections.CollectionHelper; import org.hibernate.query.IllegalSelectQueryException; import org.hibernate.query.Order; import org.hibernate.query.SelectionQuery; @@ -44,6 +43,7 @@ import java.util.Set; import java.util.function.BiConsumer; +import static org.hibernate.internal.util.collections.CollectionHelper.isEmpty; import static org.hibernate.query.sqm.internal.SqmUtil.validateCriteriaQuery; import static org.hibernate.query.sqm.tree.SqmCopyContext.noParamCopyContext; @@ -299,7 +299,7 @@ private void validateResultType( final SqmSelectClause sqmSelectClause = sqmStatement.getQuerySpec().getSelectClause(); final List> sqmSelections = sqmSelectClause.getSelections(); - if ( CollectionHelper.isEmpty( sqmSelections ) ) { + if ( isEmpty( sqmSelections ) ) { // implicit select clause, verify that resultType matches the root type if ( resultType.isAssignableFrom( rootJavaType ) ) { // it does, we are fine diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmBindable.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmBindable.java index 671dd9ed0f83..64bae0b373a2 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmBindable.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmBindable.java @@ -8,8 +8,10 @@ import org.hibernate.query.spi.BindingContext; /** - * @param + * An SQM node which may be used to disambiguate the type of an argument to a query parameter. + * * @author Gavin King + * * @since 7.0 */ public interface SqmBindable extends SqmExpressible, BindableTypeImplementor { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmExpressible.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmExpressible.java index d5eb12fa607a..a2bd20814c43 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmExpressible.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmExpressible.java @@ -10,7 +10,7 @@ /** * Anything in the application domain model that can be used in an - * SQM query as an expression + * SQM query as an expression. * * @see SqmExpression#getNodeType * diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java index 956d8e543015..8c9f3b63d684 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java @@ -1653,6 +1653,11 @@ public MultiValueParameterType(Class type) { this.javaType = getTypeConfiguration().getJavaTypeRegistry().getDescriptor( type ); } + @Override + public PersistenceType getPersistenceType() { + return PersistenceType.BASIC; + } + @Override public JavaType getExpressibleJavaType() { return javaType; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmUtil.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmUtil.java index 668954a76821..fa78f593b2c2 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmUtil.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmUtil.java @@ -55,6 +55,7 @@ import org.hibernate.query.spi.QueryParameterBindings; import org.hibernate.query.spi.QueryParameterImplementor; import org.hibernate.query.sqm.NodeBuilder; +import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.SqmQuerySource; @@ -1218,7 +1219,7 @@ private static void verifySelectionType( } if ( !jpaCompliance.isJpaQueryComplianceEnabled() ) { - verifyResultType( expectedResultClass, selection.getExpressible() ); + verifyResultType( expectedResultClass, selection ); } } @@ -1239,15 +1240,17 @@ public static boolean isResultTypeAlwaysAllowed(Class expectedResultClass) { || expectedResultClass == Tuple.class; } - protected static void verifyResultType(Class resultClass, @Nullable SqmExpressible selectionExpressible) { - if ( selectionExpressible != null ) { - final JavaType javaType = selectionExpressible.getExpressibleJavaType(); - if ( javaType != null ) { - final Class javaTypeClass = javaType.getJavaTypeClass(); - if ( javaTypeClass != Object.class ) { - if ( !isValid( resultClass, selectionExpressible, javaTypeClass, javaType ) ) { - throwQueryTypeMismatchException( resultClass, selectionExpressible ); - } + protected static void verifyResultType(Class resultClass, SqmSelectableNode selectableNode) { + final SqmBindable selectionExpressible = selectableNode.getExpressible(); + final JavaType javaType = + selectionExpressible == null + ? selectableNode.getNodeJavaType() // for SqmDynamicInstantiation + : selectionExpressible.getExpressibleJavaType(); + if ( javaType != null ) { + final Class javaTypeClass = javaType.getJavaTypeClass(); + if ( javaTypeClass != Object.class ) { + if ( !isValid( resultClass, selectionExpressible, javaTypeClass, javaType ) ) { + throwQueryTypeMismatchException( resultClass, selectionExpressible, javaTypeClass ); } } } @@ -1313,11 +1316,13 @@ private static boolean isMatchingDateJdbcType(Class resultClass, JdbcType jdb } } - private static void throwQueryTypeMismatchException(Class resultClass, SqmExpressible sqmExpressible) { + private static void throwQueryTypeMismatchException( + Class resultClass, + @Nullable SqmExpressible sqmExpressible, @Nullable Class javaTypeClass) { throw new QueryTypeMismatchException( String.format( Locale.ROOT, "Incorrect query result type: query produces '%s' but type '%s' was given", - sqmExpressible.getTypeName(), + sqmExpressible == null ? javaTypeClass.getName() : sqmExpressible.getTypeName(), resultClass.getName() ) ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java index 4a61bc345659..00aad1dadda6 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java @@ -77,6 +77,11 @@ public SqmBindable getExpressible() { return this; } + @Override + public PersistenceType getPersistenceType() { + return PersistenceType.BASIC; + } + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // SemanticPathPart diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java index 5a700f540848..1daaade88678 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java @@ -23,4 +23,7 @@ default String getTypeName() { default int getTupleLength() { return 1; } + + @Override + Class getJavaType(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddedValuedSimplePath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddedValuedSimplePath.java index b413f1936a41..2acf6a110632 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddedValuedSimplePath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddedValuedSimplePath.java @@ -71,6 +71,11 @@ public SqmBindable getExpressible() { return this; } + @Override + public PersistenceType getPersistenceType() { + return PersistenceType.EMBEDDABLE; + } + @Override public SqmDomainType getSqmType() { return getResolvedModel().getSqmType(); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmManagedDomainType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmManagedDomainType.java index 25b314a6ab5a..949156f69211 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmManagedDomainType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmManagedDomainType.java @@ -12,6 +12,11 @@ public interface SqmManagedDomainType extends ManagedDomainType, SqmDomain @Override String getTypeName(); + @Override + default Class getJavaType() { + return ManagedDomainType.super.getJavaType(); + } + @Override SqmPersistentAttribute findAttribute(String name); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmMapEntryReference.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmMapEntryReference.java index cd58eee1bdbe..6d6672e1468d 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmMapEntryReference.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmMapEntryReference.java @@ -72,12 +72,23 @@ public SqmPath getMapPath() { return mapPath; } + @Override @SuppressWarnings("unchecked") + public Class> getJavaType() { + final Class entryClass = Map.Entry.class; + return (Class>) entryClass; + } + @Override public JpaSelection> alias(String name) { this.explicitAlias = name; return this; } + @Override + public PersistenceType getPersistenceType() { + return PersistenceType.EMBEDDABLE; + } + @Override public JavaType> getJavaTypeDescriptor() { return mapEntryTypeDescriptor; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/NullSqmExpressible.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/NullSqmExpressible.java index 8f41615db326..9f3d9ee7171b 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/NullSqmExpressible.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/NullSqmExpressible.java @@ -17,6 +17,11 @@ public class NullSqmExpressible implements SqmBindable { */ public static final NullSqmExpressible NULL_SQM_EXPRESSIBLE = new NullSqmExpressible(); + @Override + public PersistenceType getPersistenceType() { + return PersistenceType.BASIC; + } + @Override public Class getBindableJavaType() { return null; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEnumLiteral.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEnumLiteral.java index 001cdeb74e4f..0c00aecfa6ba 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEnumLiteral.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEnumLiteral.java @@ -67,6 +67,16 @@ public SqmBindable getExpressible() { return this; } + @Override + public PersistenceType getPersistenceType() { + return PersistenceType.BASIC; + } + + @Override + public Class getJavaType() { + return getBindableJavaType(); + } + @Override public SqmDomainType getSqmType() { return null; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java index 2787660b4317..ccc883aec167 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java @@ -33,7 +33,8 @@ /** * @author Steve Ebersole */ -public class SqmFieldLiteral implements SqmExpression, SqmBindable, SqmSelectableNode, SemanticPathPart { +public class SqmFieldLiteral + implements SqmExpression, SqmBindable, SqmSelectableNode, SemanticPathPart { private final T value; private final JavaType fieldJavaType; private final String fieldName; @@ -66,6 +67,16 @@ public SqmFieldLiteral( this.expressible = this; } + @Override + public PersistenceType getPersistenceType() { + return PersistenceType.BASIC; + } + + @Override + public Class getJavaType() { + return getBindableJavaType(); + } + private static T extractValue(Field field) { try { //noinspection unchecked diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralNull.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralNull.java index 2f2f90f6ec93..3d9d9f0d5081 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralNull.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralNull.java @@ -15,11 +15,9 @@ */ public class SqmLiteralNull extends SqmLiteral { - private static final SqmBindable NULL_TYPE = NullSqmExpressible.NULL_SQM_EXPRESSIBLE; - public SqmLiteralNull(NodeBuilder nodeBuilder) { //noinspection unchecked - this( (SqmBindable) NULL_TYPE, nodeBuilder ); + this( (SqmBindable) NullSqmExpressible.NULL_SQM_EXPRESSIBLE, nodeBuilder ); } public SqmLiteralNull(SqmBindable expressibleType, NodeBuilder nodeBuilder) { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiation.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiation.java index f7ecd88581d7..941559257716 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiation.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiation.java @@ -9,6 +9,7 @@ import java.util.Map; import java.util.function.Consumer; +import org.checkerframework.checker.nullness.qual.Nullable; import org.hibernate.query.sqm.DynamicInstantiationNature; import org.hibernate.query.criteria.JpaCompoundSelection; import org.hibernate.query.sqm.NodeBuilder; @@ -17,8 +18,8 @@ import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; -import org.hibernate.query.sqm.tree.expression.SqmExpression; import org.hibernate.query.sqm.tree.domain.SqmDomainType; +import org.hibernate.query.sqm.tree.expression.SqmExpression; import org.hibernate.query.sqm.tree.jpa.AbstractJpaSelection; import org.hibernate.type.descriptor.java.JavaType; @@ -110,7 +111,7 @@ public static > SqmDynamicInstantiation listInstantiation( private SqmDynamicInstantiation( SqmDynamicInstantiationTarget instantiationTarget, NodeBuilder nodeBuilder) { - super( instantiationTarget, nodeBuilder ); + super( instantiationTarget.getSqmType(), nodeBuilder ); this.instantiationTarget = instantiationTarget; } @@ -118,7 +119,7 @@ private SqmDynamicInstantiation( SqmDynamicInstantiationTarget instantiationTarget, List> arguments, NodeBuilder nodeBuilder) { - super( instantiationTarget, nodeBuilder ); + super( instantiationTarget.getSqmType(), nodeBuilder ); this.instantiationTarget = instantiationTarget; for ( SqmSelectableNode argument : arguments ) { final SqmDynamicInstantiationArgument arg = @@ -300,11 +301,15 @@ public SqmDynamicInstantiation makeShallowCopy() { return new SqmDynamicInstantiation<>( getInstantiationTarget(), nodeBuilder() ); } + @Override + public @Nullable JavaType getNodeJavaType() { + return instantiationTarget.getExpressibleJavaType(); + } + private static class DynamicInstantiationTargetImpl implements SqmDynamicInstantiationTarget { private final DynamicInstantiationNature nature; private final JavaType javaType; - private DynamicInstantiationTargetImpl(DynamicInstantiationNature nature, JavaType javaType) { this.nature = nature; this.javaType = javaType; @@ -325,10 +330,10 @@ public JavaType getExpressibleJavaType() { return getTargetTypeDescriptor(); } - @Override - public Class getBindableJavaType() { - return getTargetTypeDescriptor().getJavaTypeClass(); - } +// @Override +// public Class getBindableJavaType() { +// return getTargetTypeDescriptor().getJavaTypeClass(); +// } @Override public SqmDomainType getSqmType() { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiationTarget.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiationTarget.java index 9f48484d4c73..f2ef91888691 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiationTarget.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiationTarget.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.DynamicInstantiationNature; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.type.descriptor.java.JavaType; /** @@ -15,7 +15,7 @@ * * @author Steve Ebersole */ -public interface SqmDynamicInstantiationTarget extends SqmBindable { +public interface SqmDynamicInstantiationTarget extends SqmExpressible { /** * Retrieves the enum describing the nature of this target. diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmJpaCompoundSelection.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmJpaCompoundSelection.java index 04b6b73f2c26..2066a51d02b6 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmJpaCompoundSelection.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmJpaCompoundSelection.java @@ -12,11 +12,11 @@ import org.hibernate.query.criteria.JpaSelection; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; -import org.hibernate.query.sqm.tree.expression.AbstractSqmExpression; import org.hibernate.query.sqm.tree.domain.SqmDomainType; +import org.hibernate.query.sqm.tree.expression.AbstractSqmExpression; import org.hibernate.type.descriptor.java.JavaType; import jakarta.persistence.criteria.Selection; @@ -39,23 +39,7 @@ */ public class SqmJpaCompoundSelection extends AbstractSqmExpression - implements JpaCompoundSelection, SqmBindable { - - // todo (6.0) : should this really be SqmBindable? - // - seems like it ought to be limited to just `SqmSelectableNode`. - // otherwise why the distinction? why not just just re-use the same - // impl between this and `org.hibernate.query.sqm.tree.expression.SqmTuple`? - // Seems like either: - // a) this contract should not define support for being used out side the select clause, - // which would mean implementing `SqmSelectableNode`, but not `SqmExpressible` - so it - // would not be usable as a - // b) - // - // todo (6.0) : either way we need to make sure we should support whether "tuples" can be used "outside the select clause" - // - see `org.hibernate.jpa.spi.JpaCompliance#isJpaQueryComplianceEnabled` = the spec only defines - // support for using "compound selections" in the select clause. In most cases Hibernate - // can support using tuples in other clauses. If we keep the Easy way is to add a switch in creation of these - // whether `SqmJpaCompoundSelection` or `SqmTuple` is used based on `JpaCompliance#isJpaQueryComplianceEnabled` + implements JpaCompoundSelection, SqmExpressible { private final List> selectableNodes; private final JavaType javaType; @@ -68,7 +52,7 @@ public SqmJpaCompoundSelection( this.selectableNodes = selectableNodes; this.javaType = javaType; - setExpressibleType( this ); +// setExpressibleType( this ); } @Override @@ -106,10 +90,10 @@ public Class getJavaType() { return getJavaTypeDescriptor().getJavaTypeClass(); } - @Override - public Class getBindableJavaType() { - return getJavaType(); - } +// @Override +// public Class getBindableJavaType() { +// return getJavaType(); +// } @Override public List> getSelectionItems() { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmSelection.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmSelection.java index 97c0113845c9..a1b390dfdc1c 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmSelection.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmSelection.java @@ -4,11 +4,13 @@ */ package org.hibernate.query.sqm.tree.select; +import org.checkerframework.checker.nullness.qual.Nullable; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; import org.hibernate.query.sqm.tree.AbstractSqmNode; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; +import org.hibernate.type.descriptor.java.JavaType; /** * Represents an individual selection within a select clause. @@ -51,6 +53,11 @@ public SqmSelectableNode getSelectableNode() { return selectableNode; } + @Override + public @Nullable JavaType getNodeJavaType() { + return selectableNode.getNodeJavaType(); + } + @Override public String getAlias() { return alias; diff --git a/hibernate-core/src/main/java/org/hibernate/type/AbstractStandardBasicType.java b/hibernate-core/src/main/java/org/hibernate/type/AbstractStandardBasicType.java index 0b11a6eaa240..201ed51ca20f 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/AbstractStandardBasicType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/AbstractStandardBasicType.java @@ -86,7 +86,7 @@ public JdbcLiteralFormatter getJdbcLiteralFormatter() { @Override public Class getJavaType() { - return this.getExpressibleJavaType().getJavaTypeClass(); + return getExpressibleJavaType().getJavaTypeClass(); } public T fromString(CharSequence string) { diff --git a/hibernate-core/src/main/java/org/hibernate/type/BasicType.java b/hibernate-core/src/main/java/org/hibernate/type/BasicType.java index 88464430b428..95b5749083b2 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/BasicType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/BasicType.java @@ -39,6 +39,11 @@ default MappingType getMappedType() { return this; } + @Override + default Class getJavaType() { + return BasicDomainType.super.getJavaType(); + } + @Override default JavaType getJavaTypeDescriptor() { return this.getMappedJavaType(); diff --git a/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java b/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java index 057ca2da6d50..6ecc1452f44f 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java +++ b/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java @@ -60,6 +60,11 @@ public Class getBindableJavaType() { return javaType; } + @Override + public PersistenceType getPersistenceType() { + return PersistenceType.BASIC; + } + public int getSqlTypeCode() { return sqlTypeCode; } diff --git a/hibernate-core/src/main/java/org/hibernate/type/ComponentType.java b/hibernate-core/src/main/java/org/hibernate/type/ComponentType.java index 8f5b66819cda..3fc8d4f80688 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/ComponentType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/ComponentType.java @@ -156,6 +156,11 @@ public final boolean isComponentType() { return true; } + @Override + public PersistenceType getPersistenceType() { + return PersistenceType.EMBEDDABLE; + } + public Class getReturnedClass() { return componentClass; } diff --git a/hibernate-core/src/main/java/org/hibernate/type/internal/ConvertedBasicTypeImpl.java b/hibernate-core/src/main/java/org/hibernate/type/internal/ConvertedBasicTypeImpl.java index 76978e950315..6519468ddfae 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/internal/ConvertedBasicTypeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/type/internal/ConvertedBasicTypeImpl.java @@ -125,7 +125,7 @@ public JdbcLiteralFormatter getJdbcLiteralFormatter() { @Override public Class getJavaType() { - return this.getExpressibleJavaType().getJavaTypeClass(); + return getExpressibleJavaType().getJavaTypeClass(); } @Override From c1165c997e9439e6e3c3b7f38533a16021d49c21 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Mon, 12 May 2025 05:07:22 +0200 Subject: [PATCH 5/9] HHH-19449 clean up TupleType hierarchy --- .../model/domain/internal/ArrayTupleType.java | 6 ++---- .../query/sqm/tree/domain/SqmDomainType.java | 11 +++++------ .../java/org/hibernate/query/sqm/tuple/TupleType.java | 8 ++++---- .../query/sqm/tuple/internal/AnonymousTupleType.java | 5 ++--- 4 files changed, 13 insertions(+), 17 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java index 4d447e742557..82dc7444c591 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java @@ -16,7 +16,6 @@ import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.domain.SqmDomainType; import org.hibernate.query.sqm.tuple.TupleType; -import org.hibernate.metamodel.model.domain.ReturnableType; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.type.descriptor.java.JavaType; import org.hibernate.type.descriptor.java.ObjectArrayJavaType; @@ -24,9 +23,8 @@ /** * @author Christian Beikov */ -public class ArrayTupleType implements TupleType, - ReturnableType, SqmDomainType, - MappingModelExpressible { +public class ArrayTupleType + implements TupleType, SqmDomainType, MappingModelExpressible { private final ObjectArrayJavaType javaType; private final SqmBindable[] components; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java index 1daaade88678..2a619bf3ed54 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java @@ -6,14 +6,16 @@ import org.hibernate.Incubating; import org.hibernate.metamodel.model.domain.DomainType; -import org.hibernate.query.BindableType; import org.hibernate.query.sqm.SqmBindable; @Incubating public interface SqmDomainType - extends DomainType, SqmBindable, BindableType { + extends DomainType, SqmBindable { + @Override - SqmDomainType getSqmType(); + default Class getJavaType() { + return SqmBindable.super.getJavaType(); + } @Override default String getTypeName() { @@ -23,7 +25,4 @@ default String getTypeName() { default int getTupleLength() { return 1; } - - @Override - Class getJavaType(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/TupleType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/TupleType.java index 6a29a9365237..963e404d3a72 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/TupleType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/TupleType.java @@ -4,17 +4,17 @@ */ package org.hibernate.query.sqm.tuple; -import java.util.List; - +import org.hibernate.metamodel.model.domain.ReturnableType; import org.hibernate.query.sqm.SqmBindable; -import org.hibernate.query.sqm.SqmExpressible; + +import java.util.List; /** * Describes any structural type without a direct java type representation. * * @author Christian Beikov */ -public interface TupleType extends SqmExpressible { +public interface TupleType extends ReturnableType { int componentCount(); String getComponentName(int index); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java index b39e852141ed..3e4c76e72574 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java @@ -23,7 +23,6 @@ import org.hibernate.query.sqm.tree.domain.SqmDomainType; import org.hibernate.query.sqm.tree.domain.SqmPluralPersistentAttribute; import org.hibernate.query.sqm.tuple.TupleType; -import org.hibernate.metamodel.model.domain.ReturnableType; import org.hibernate.query.SemanticException; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.tree.domain.SqmPath; @@ -46,7 +45,7 @@ */ @Incubating public class AnonymousTupleType - implements TupleType, SqmDomainType, ReturnableType, SqmPathSource { + implements TupleType, SqmDomainType, SqmPathSource { private final JavaType javaTypeDescriptor; private final @Nullable NavigablePath[] componentSourcePaths; @@ -277,7 +276,7 @@ public Class getBindableJavaType() { @Override public Class getJavaType() { - return getBindableJavaType(); + return SqmDomainType.super.getJavaType(); } @Override From 216e4fbae24efebb6182a40a2b02c59f7faa6be4 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Mon, 12 May 2025 07:22:43 +0200 Subject: [PATCH 6/9] HHH-19449 make setParameter() accept JPA's Type instead of BindableType --- .../dialect/function/AvgFunction.java | 2 +- .../dialect/function/ChrLiteralEmulation.java | 2 +- .../function/DynamicDispatchFunction.java | 2 +- .../GenerateSeriesArgumentValidator.java | 2 +- .../dialect/function/TruncFunction.java | 2 +- .../ArrayAndElementArgumentValidator.java | 2 +- .../array/ArrayArgumentValidator.java | 2 +- .../array/ArrayConstructorFunction.java | 2 +- .../array/ArrayContainsArgumentValidator.java | 2 +- .../array/ArrayIncludesArgumentValidator.java | 2 +- .../ArraysOfSameTypeArgumentValidator.java | 2 +- .../json/JsonObjectArgumentsValidator.java | 2 +- .../function/xml/XmlElementFunction.java | 2 +- .../function/xml/XmlForestFunction.java | 2 +- .../spi/AbstractParameterDescriptor.java | 2 +- .../query/spi/NamedParameterDescriptor.java | 2 +- .../query/spi/OrdinalParameterDescriptor.java | 2 +- .../graph/internal/AttributeNodeImpl.java | 5 +- .../org/hibernate/jpa/HibernateHints.java | 6 +- .../hibernate/metamodel/MappingMetamodel.java | 2 +- .../model/domain/BasicDomainType.java | 5 + .../model/domain/ManagedDomainType.java | 4 +- .../model/domain/SimpleDomainType.java | 7 +- .../internal/AnyMappingDomainTypeImpl.java | 5 + .../model/domain/internal/ArrayTupleType.java | 5 + .../model/domain/internal/BasicTypeImpl.java | 5 + .../domain/internal/MappingMetamodelImpl.java | 6 +- .../spi/RuntimeMetamodelsImplementor.java | 2 +- .../hibernate/procedure/ProcedureCall.java | 12 +- .../internal/FunctionReturnImpl.java | 2 +- .../NamedCallableQueryMementoImpl.java | 2 +- .../procedure/internal/ProcedureCallImpl.java | 29 ++--- .../internal/ProcedureParameterImpl.java | 4 +- .../ProcedureParameterMetadataImpl.java | 2 +- .../spi/ProcedureCallImplementor.java | 6 +- .../org/hibernate/query/BindableType.java | 35 ------ .../hibernate/query/CommonQueryContract.java | 103 +++++++++--------- .../org/hibernate/query/MutationQuery.java | 19 ++-- .../java/org/hibernate/query/NativeQuery.java | 19 ++-- .../hibernate/query/ParameterMetadata.java | 2 + .../main/java/org/hibernate/query/Query.java | 103 +++++++++--------- .../org/hibernate/query/QueryParameter.java | 1 + .../org/hibernate/query/SelectionQuery.java | 21 ++-- .../hibernate/query/TypedParameterValue.java | 2 +- .../query/hql/spi/SqmQueryImplementor.java | 20 ++-- .../query/internal/ParameterMetadataImpl.java | 2 +- .../query/internal/QueryEngineImpl.java | 2 +- .../internal/QueryParameterBindingImpl.java | 3 +- .../internal/QueryParameterBindingsImpl.java | 2 +- .../internal/QueryParameterNamedImpl.java | 2 +- .../QueryParameterPositionalImpl.java | 2 +- .../spi/AbstractCommonQueryContract.java | 57 +++++----- .../hibernate/query/spi/AbstractQuery.java | 20 ++-- .../query/spi/AbstractQueryParameter.java | 3 +- .../query/spi/AbstractSelectionQuery.java | 20 ++-- .../query/spi/BindableTypeImplementor.java | 32 ------ .../org/hibernate/query/spi/QueryEngine.java | 1 + .../hibernate/query/spi/QueryImplementor.java | 26 ++--- .../query/spi/QueryParameterBinding.java | 2 +- .../QueryParameterBindingTypeResolver.java | 2 +- .../spi/QueryParameterBindingValidator.java | 3 +- .../query/spi/QueryParameterImplementor.java | 2 +- .../query/spi/QueryParameterListBinding.java | 2 +- .../org/hibernate/query/spi/SqmQuery.java | 20 ++-- .../query/sql/internal/NativeQueryImpl.java | 26 ++--- .../query/sql/spi/NativeQueryImplementor.java | 20 ++-- .../org/hibernate/query/sqm/SqmBindable.java | 6 +- .../query/sqm/SqmSelectionQuery.java | 20 ++-- .../internal/AbstractSqmSelectionQuery.java | 2 +- .../query/sqm/internal/QuerySqmImpl.java | 21 ++-- .../sqm/internal/SqmCriteriaNodeBuilder.java | 4 +- .../sqm/internal/SqmSelectionQueryImpl.java | 23 ++-- .../query/sqm/internal/TypecheckUtil.java | 2 +- .../function/ArgumentTypesValidator.java | 2 +- .../produce/function/ArgumentsValidator.java | 2 +- .../function/StandardArgumentsValidators.java | 2 +- ...elegatingSqmSelectionQueryImplementor.java | 24 ++-- .../query/sqm/spi/SqmCreationContext.java | 2 +- .../sqm/sql/BaseSqmToSqlAstConverter.java | 2 +- .../tree/expression/AbstractSqmParameter.java | 2 +- .../tree/expression/JpaCriteriaParameter.java | 2 +- .../tree/expression/SqmExpressionHelper.java | 4 +- .../SqmJpaCriteriaParameterWrapper.java | 2 +- .../sqm/tree/expression/SqmParameter.java | 2 +- .../ValueBindJpaCriteriaParameter.java | 2 +- .../sqm/tree/jpa/ParameterCollector.java | 2 +- .../tree/predicate/SqmMemberOfPredicate.java | 4 +- .../sql/ast/spi/SqlAstCreationContext.java | 2 +- .../exec/internal/AbstractJdbcParameter.java | 2 +- .../internal/JdbcParameterBindingsImpl.java | 2 +- .../sql/exec/spi/JdbcParameterBindings.java | 2 +- .../java/org/hibernate/type/BasicType.java | 5 + .../hibernate/type/BasicTypeReference.java | 4 +- .../java/org/hibernate/type/BindableType.java | 48 ++++++++ .../{query/spi => type}/BindingContext.java | 11 +- .../org/hibernate/type/ComponentType.java | 1 - .../org/hibernate/type/OutputableType.java | 1 - .../ProcedureParameterExtractionAware.java | 4 +- .../internal/BindingTypeHelper.java | 6 +- .../converted/converter/ConverterTest.java | 2 +- .../vector/VectorArgumentValidator.java | 2 +- 101 files changed, 479 insertions(+), 462 deletions(-) delete mode 100644 hibernate-core/src/main/java/org/hibernate/query/BindableType.java delete mode 100644 hibernate-core/src/main/java/org/hibernate/query/spi/BindableTypeImplementor.java create mode 100644 hibernate-core/src/main/java/org/hibernate/type/BindableType.java rename hibernate-core/src/main/java/org/hibernate/{query/spi => type}/BindingContext.java (83%) rename hibernate-core/src/main/java/org/hibernate/{query => type}/internal/BindingTypeHelper.java (98%) diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/AvgFunction.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/AvgFunction.java index 4d6560f2d0f7..02bc83b71278 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/AvgFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/AvgFunction.java @@ -14,7 +14,7 @@ import org.hibernate.metamodel.mapping.JdbcMapping; import org.hibernate.metamodel.model.domain.DomainType; import org.hibernate.metamodel.model.domain.ReturnableType; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.function.AbstractSqmSelfRenderingFunctionDescriptor; import org.hibernate.query.sqm.function.FunctionKind; diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/ChrLiteralEmulation.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/ChrLiteralEmulation.java index 5d5d623691be..89622f385722 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/ChrLiteralEmulation.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/ChrLiteralEmulation.java @@ -9,7 +9,7 @@ import org.hibernate.QueryException; import org.hibernate.metamodel.model.domain.ReturnableType; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.sqm.function.AbstractSqmSelfRenderingFunctionDescriptor; import org.hibernate.query.sqm.produce.function.ArgumentTypesValidator; import org.hibernate.query.sqm.produce.function.ArgumentsValidator; diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/DynamicDispatchFunction.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/DynamicDispatchFunction.java index 3d484ce09695..eaad01a24512 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/DynamicDispatchFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/DynamicDispatchFunction.java @@ -7,7 +7,7 @@ import java.util.List; import org.hibernate.metamodel.model.domain.ReturnableType; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.spi.QueryEngine; import org.hibernate.query.sqm.function.FunctionKind; import org.hibernate.query.sqm.function.SelfRenderingSqmFunction; diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/GenerateSeriesArgumentValidator.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/GenerateSeriesArgumentValidator.java index 3e0cac454729..2cb780f9cb9e 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/GenerateSeriesArgumentValidator.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/GenerateSeriesArgumentValidator.java @@ -6,7 +6,7 @@ import org.hibernate.metamodel.mapping.JdbcMapping; import org.hibernate.metamodel.model.domain.DomainType; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.produce.function.ArgumentsValidator; import org.hibernate.query.sqm.produce.function.FunctionArgumentException; diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/TruncFunction.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/TruncFunction.java index 99cdc4374f8d..81ed652d5a3f 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/TruncFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/TruncFunction.java @@ -8,7 +8,7 @@ import java.util.List; import org.hibernate.metamodel.model.domain.ReturnableType; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.spi.QueryEngine; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.common.TemporalUnit; diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayAndElementArgumentValidator.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayAndElementArgumentValidator.java index 08f096caf5a8..17cf5cafed42 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayAndElementArgumentValidator.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayAndElementArgumentValidator.java @@ -6,7 +6,7 @@ import java.util.List; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.produce.function.ArgumentsValidator; import org.hibernate.query.sqm.produce.function.FunctionArgumentException; diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayArgumentValidator.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayArgumentValidator.java index 737957db7ca7..62881a01ba6d 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayArgumentValidator.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayArgumentValidator.java @@ -6,7 +6,7 @@ import java.util.List; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.produce.function.ArgumentsValidator; import org.hibernate.query.sqm.produce.function.FunctionArgumentException; diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayConstructorFunction.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayConstructorFunction.java index ef90bb13b314..e3a465924b11 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayConstructorFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayConstructorFunction.java @@ -8,7 +8,7 @@ import org.hibernate.metamodel.mapping.JdbcMappingContainer; import org.hibernate.metamodel.model.domain.ReturnableType; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.function.AbstractSqmSelfRenderingFunctionDescriptor; import org.hibernate.query.sqm.produce.function.ArgumentsValidator; diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayContainsArgumentValidator.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayContainsArgumentValidator.java index b0cc3859fb87..d559f62cf99f 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayContainsArgumentValidator.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayContainsArgumentValidator.java @@ -6,7 +6,7 @@ import java.util.List; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.produce.function.ArgumentsValidator; import org.hibernate.query.sqm.produce.function.FunctionArgumentException; diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayIncludesArgumentValidator.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayIncludesArgumentValidator.java index 0e32649a2606..62a01760f809 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayIncludesArgumentValidator.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayIncludesArgumentValidator.java @@ -6,7 +6,7 @@ import java.util.List; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.sqm.produce.function.ArgumentsValidator; import org.hibernate.query.sqm.produce.function.FunctionArgumentException; import org.hibernate.query.sqm.tree.SqmTypedNode; diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArraysOfSameTypeArgumentValidator.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArraysOfSameTypeArgumentValidator.java index f9403cd3966e..004ae3caf093 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArraysOfSameTypeArgumentValidator.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArraysOfSameTypeArgumentValidator.java @@ -8,7 +8,7 @@ import java.util.Objects; import org.hibernate.metamodel.model.domain.DomainType; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.produce.function.ArgumentsValidator; import org.hibernate.query.sqm.produce.function.FunctionArgumentException; diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/json/JsonObjectArgumentsValidator.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/json/JsonObjectArgumentsValidator.java index a0a908832067..6e17d82c6992 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/json/JsonObjectArgumentsValidator.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/json/JsonObjectArgumentsValidator.java @@ -9,7 +9,7 @@ import org.hibernate.metamodel.mapping.JdbcMapping; import org.hibernate.metamodel.mapping.JdbcMappingContainer; import org.hibernate.metamodel.model.domain.DomainType; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.produce.function.ArgumentsValidator; import org.hibernate.query.sqm.produce.function.FunctionArgumentException; diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/xml/XmlElementFunction.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/xml/XmlElementFunction.java index 290cb3153f10..6e15c706b25c 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/xml/XmlElementFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/xml/XmlElementFunction.java @@ -9,7 +9,7 @@ import org.hibernate.type.descriptor.jdbc.XmlHelper; import org.hibernate.metamodel.model.domain.ReturnableType; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.spi.QueryEngine; import org.hibernate.query.sqm.function.AbstractSqmSelfRenderingFunctionDescriptor; import org.hibernate.query.sqm.function.FunctionKind; diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/xml/XmlForestFunction.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/xml/XmlForestFunction.java index 68c8e1d16bef..3f4150995d7f 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/xml/XmlForestFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/xml/XmlForestFunction.java @@ -8,7 +8,7 @@ import org.hibernate.type.descriptor.jdbc.XmlHelper; import org.hibernate.metamodel.model.domain.ReturnableType; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.sqm.function.AbstractSqmSelfRenderingFunctionDescriptor; import org.hibernate.query.sqm.function.FunctionKind; import org.hibernate.query.sqm.produce.function.ArgumentsValidator; diff --git a/hibernate-core/src/main/java/org/hibernate/engine/query/spi/AbstractParameterDescriptor.java b/hibernate-core/src/main/java/org/hibernate/engine/query/spi/AbstractParameterDescriptor.java index f0f4c85594d7..dbc4eea93eef 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/query/spi/AbstractParameterDescriptor.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/query/spi/AbstractParameterDescriptor.java @@ -5,10 +5,10 @@ package org.hibernate.engine.query.spi; import org.hibernate.Incubating; -import org.hibernate.query.BindableType; import org.hibernate.metamodel.model.domain.EmbeddableDomainType; import org.hibernate.metamodel.model.domain.internal.EntityTypeImpl; import org.hibernate.query.QueryParameter; +import org.hibernate.type.BindableType; /** * @apiNote Consider this contract (and its subcontracts) as incubating as we transition to 6.0 and SQM. diff --git a/hibernate-core/src/main/java/org/hibernate/engine/query/spi/NamedParameterDescriptor.java b/hibernate-core/src/main/java/org/hibernate/engine/query/spi/NamedParameterDescriptor.java index 3cc492b6a48e..e6acc1539c53 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/query/spi/NamedParameterDescriptor.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/query/spi/NamedParameterDescriptor.java @@ -5,7 +5,7 @@ package org.hibernate.engine.query.spi; import org.hibernate.Incubating; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; /** * Descriptor regarding a named parameter. diff --git a/hibernate-core/src/main/java/org/hibernate/engine/query/spi/OrdinalParameterDescriptor.java b/hibernate-core/src/main/java/org/hibernate/engine/query/spi/OrdinalParameterDescriptor.java index 65c1be4b8bff..9e9efc18d4b3 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/query/spi/OrdinalParameterDescriptor.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/query/spi/OrdinalParameterDescriptor.java @@ -5,7 +5,7 @@ package org.hibernate.engine.query.spi; import org.hibernate.Incubating; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; /** * Descriptor regarding an ordinal parameter. diff --git a/hibernate-core/src/main/java/org/hibernate/graph/internal/AttributeNodeImpl.java b/hibernate-core/src/main/java/org/hibernate/graph/internal/AttributeNodeImpl.java index 0b5ab77f1dbe..715922a3dc8b 100644 --- a/hibernate-core/src/main/java/org/hibernate/graph/internal/AttributeNodeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/graph/internal/AttributeNodeImpl.java @@ -16,6 +16,7 @@ import org.hibernate.metamodel.model.domain.PluralPersistentAttribute; import org.hibernate.metamodel.model.domain.SimpleDomainType; import org.hibernate.metamodel.model.domain.SingularPersistentAttribute; +import org.hibernate.type.BindableType; import java.util.HashMap; import java.util.Map; @@ -259,7 +260,7 @@ public SubGraphImplementor makeSubGraph() { @Override @Deprecated public SubGraphImplementor makeSubGraph(Class subtype) { final ManagedDomainType managedType = asManagedType( valueGraphType ); - if ( !managedType.getBindableJavaType().isAssignableFrom( subtype ) ) { + if ( !((BindableType) managedType).getBindableJavaType().isAssignableFrom( subtype ) ) { throw new IllegalArgumentException( "Not a subtype: " + subtype.getName() ); } @SuppressWarnings("unchecked") @@ -283,7 +284,7 @@ public SubGraphImplementor makeKeySubGraph() { public SubGraphImplementor makeKeySubGraph(Class subtype) { checkMap(); final ManagedDomainType type = asManagedType( keyGraphType ); - if ( !type.getBindableJavaType().isAssignableFrom( subtype ) ) { + if ( ! ((BindableType) type).getBindableJavaType().isAssignableFrom( subtype ) ) { throw new IllegalArgumentException( "Not a key subtype: " + subtype.getName() ); } @SuppressWarnings("unchecked") diff --git a/hibernate-core/src/main/java/org/hibernate/jpa/HibernateHints.java b/hibernate-core/src/main/java/org/hibernate/jpa/HibernateHints.java index 537964225dc5..2f88e6ca6237 100644 --- a/hibernate-core/src/main/java/org/hibernate/jpa/HibernateHints.java +++ b/hibernate-core/src/main/java/org/hibernate/jpa/HibernateHints.java @@ -4,6 +4,8 @@ */ package org.hibernate.jpa; +import org.hibernate.type.BindableType; + /** * List of Hibernate-specific (extension) hints available to query, * load, and lock scenarios. @@ -165,7 +167,7 @@ public interface HibernateHints { /** * The {@linkplain org.hibernate.type.SqlTypes JDBC type code}, - * {@linkplain org.hibernate.query.BindableType type}, or + * {@linkplain BindableType type}, or * {@link Class} of the value returned by a SQL function called * via {@link org.hibernate.procedure.ProcedureCall} or * {@link jakarta.persistence.StoredProcedureQuery}. Has the side @@ -173,7 +175,7 @@ public interface HibernateHints { * rather than a call to a stored procedure. * * @see org.hibernate.procedure.ProcedureCall#markAsFunctionCall(int) - * @see org.hibernate.procedure.ProcedureCall#markAsFunctionCall(org.hibernate.query.BindableType) + * @see org.hibernate.procedure.ProcedureCall#markAsFunctionCall(BindableType) * @see org.hibernate.procedure.ProcedureCall#markAsFunctionCall(Class) */ String HINT_CALLABLE_FUNCTION_RETURN_TYPE = "hibernate.procedure.function_return_jdbc_type_code"; diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/MappingMetamodel.java b/hibernate-core/src/main/java/org/hibernate/metamodel/MappingMetamodel.java index f89f0f205e49..fa7d18022c1a 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/MappingMetamodel.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/MappingMetamodel.java @@ -15,7 +15,7 @@ import org.hibernate.graph.spi.RootGraphImplementor; import org.hibernate.metamodel.mapping.EmbeddableValuedModelPart; import org.hibernate.metamodel.mapping.MappingModelExpressible; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.metamodel.model.domain.EntityDomainType; import org.hibernate.metamodel.model.domain.NavigableRole; import org.hibernate.persister.collection.CollectionPersister; diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/BasicDomainType.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/BasicDomainType.java index 3db8f6e1a2f7..ce98da878f4e 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/BasicDomainType.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/BasicDomainType.java @@ -20,6 +20,11 @@ default PersistenceType getPersistenceType() { return PersistenceType.BASIC; } + @Override + default Class getBindableJavaType() { + return ReturnableType.super.getBindableJavaType(); + } + @Override default Class getJavaType() { return ReturnableType.super.getJavaType(); diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/ManagedDomainType.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/ManagedDomainType.java index a465d92f12d2..e41f5f57c38f 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/ManagedDomainType.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/ManagedDomainType.java @@ -10,15 +10,13 @@ import org.hibernate.metamodel.RepresentationMode; import jakarta.persistence.metamodel.ManagedType; -import org.hibernate.query.BindableType; /** * Extensions to the JPA-defined {@link ManagedType} contract. * * @author Steve Ebersole */ -public interface ManagedDomainType - extends DomainType, ManagedType, BindableType { +public interface ManagedDomainType extends DomainType, ManagedType { /** * Get the type name. * diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/SimpleDomainType.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/SimpleDomainType.java index f7bffb802060..6e8f25b66c55 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/SimpleDomainType.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/SimpleDomainType.java @@ -4,16 +4,15 @@ */ package org.hibernate.metamodel.model.domain; -import org.hibernate.query.BindableType; +import jakarta.persistence.metamodel.Type; /** * Describes any non-collection type * * @author Steve Ebersole */ -public interface SimpleDomainType - extends DomainType, BindableType { - @Override +public interface SimpleDomainType extends DomainType, Type { + default Class getBindableJavaType() { return getJavaType(); } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyMappingDomainTypeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyMappingDomainTypeImpl.java index e443d633d878..f4e9470e5890 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyMappingDomainTypeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyMappingDomainTypeImpl.java @@ -60,6 +60,11 @@ public SqmDomainType getSqmType() { return this; } + @Override + public Class getBindableJavaType() { + return AnyMappingDomainType.super.getBindableJavaType(); + } + @Override public String getTypeName() { return baseJtd.getTypeName(); diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java index 82dc7444c591..41279efeda8e 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java @@ -34,6 +34,11 @@ public ArrayTupleType(SqmBindable[] components) { this.javaType = new ObjectArrayJavaType( getTypeDescriptors( components ) ); } + @Override + public Class getBindableJavaType() { + return TupleType.super.getBindableJavaType(); + } + @Override public String getTypeName() { return SqmDomainType.super.getTypeName(); diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicTypeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicTypeImpl.java index c2abc30de60e..3cd274c69905 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicTypeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicTypeImpl.java @@ -29,6 +29,11 @@ public BasicTypeImpl(JavaType javaType, JdbcType jdbcType) { this.jdbcType = jdbcType; } + @Override + public Class getBindableJavaType() { + return BasicDomainType.super.getBindableJavaType(); + } + @Override public String getTypeName() { return javaType.getTypeName(); diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/MappingMetamodelImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/MappingMetamodelImpl.java index 6039a523947b..ef0094988810 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/MappingMetamodelImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/MappingMetamodelImpl.java @@ -43,7 +43,7 @@ import org.hibernate.metamodel.model.domain.JpaMetamodel; import org.hibernate.metamodel.model.domain.ManagedDomainType; import org.hibernate.metamodel.model.domain.NavigableRole; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.sqm.tuple.TupleType; import org.hibernate.metamodel.model.domain.spi.JpaMetamodelImplementor; import org.hibernate.metamodel.spi.EntityRepresentationStrategy; @@ -53,7 +53,7 @@ import org.hibernate.persister.entity.EntityPersister; import org.hibernate.persister.spi.PersisterFactory; import org.hibernate.proxy.LazyInitializer; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.query.spi.QueryParameterBindingTypeResolver; import org.hibernate.query.sqm.tuple.internal.AnonymousTupleSimpleSqmPathSource; import org.hibernate.query.sqm.tuple.internal.AnonymousTupleSqmPathSource; @@ -722,7 +722,7 @@ public BindableType resolveQueryParameterType(Class javaClass) { final ManagedDomainType managedType = jpaMetamodel.findManagedType( javaClass ); if ( managedType != null ) { - return managedType; + return (BindableType) managedType; } final JavaTypeRegistry javaTypeRegistry = getTypeConfiguration().getJavaTypeRegistry(); diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/spi/RuntimeMetamodelsImplementor.java b/hibernate-core/src/main/java/org/hibernate/metamodel/spi/RuntimeMetamodelsImplementor.java index 96426a1ea4a7..e30cd7194768 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/spi/RuntimeMetamodelsImplementor.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/spi/RuntimeMetamodelsImplementor.java @@ -6,7 +6,7 @@ import org.hibernate.metamodel.RuntimeMetamodels; import org.hibernate.metamodel.model.domain.spi.JpaMetamodelImplementor; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.type.MappingContext; /** diff --git a/hibernate-core/src/main/java/org/hibernate/procedure/ProcedureCall.java b/hibernate-core/src/main/java/org/hibernate/procedure/ProcedureCall.java index 987809989bfb..4b884023b6c1 100644 --- a/hibernate-core/src/main/java/org/hibernate/procedure/ProcedureCall.java +++ b/hibernate-core/src/main/java/org/hibernate/procedure/ProcedureCall.java @@ -13,10 +13,10 @@ import jakarta.persistence.ParameterMode; import jakarta.persistence.StoredProcedureQuery; import jakarta.persistence.TemporalType; +import jakarta.persistence.metamodel.Type; import org.hibernate.Incubating; import org.hibernate.MappingException; -import org.hibernate.query.BindableType; import org.hibernate.query.SynchronizeableQuery; import org.hibernate.query.CommonQueryContract; @@ -122,7 +122,7 @@ public interface ProcedureCall * @return {@code this}, for method chaining * @since 6.2 */ - ProcedureCall markAsFunctionCall(BindableType typeReference); + ProcedureCall markAsFunctionCall(Type typeReference); /** * Basic form for registering a positional parameter. @@ -146,13 +146,13 @@ public interface ProcedureCall * * @return The parameter registration memento */ - ProcedureParameter registerParameter(int position, BindableType type, ParameterMode mode); + ProcedureParameter registerParameter(int position, Type type, ParameterMode mode); /** * Like {@link #registerStoredProcedureParameter(int, Class, ParameterMode)} but a type reference is given * instead of a class for the parameter type. */ - ProcedureCall registerStoredProcedureParameter(int position, BindableType type, ParameterMode mode); + ProcedureCall registerStoredProcedureParameter(int position, Type type, ParameterMode mode); /** * Retrieve a previously registered parameter memento by the position under which it was registered. @@ -195,14 +195,14 @@ ProcedureParameter registerParameter(String parameterName, Class type, * @throws NamedParametersNotSupportedException When the underlying database is known to not support * named procedure parameters. */ - ProcedureParameter registerParameter(String parameterName, BindableType type, ParameterMode mode) + ProcedureParameter registerParameter(String parameterName, Type type, ParameterMode mode) throws NamedParametersNotSupportedException; /** * Like {@link #registerStoredProcedureParameter(String, Class, ParameterMode)} but a type reference is given * instead of a class for the parameter type. */ - ProcedureCall registerStoredProcedureParameter(String parameterName, BindableType type, ParameterMode mode); + ProcedureCall registerStoredProcedureParameter(String parameterName, Type type, ParameterMode mode); /** * Retrieve a previously registered parameter memento by the name under which it was registered. diff --git a/hibernate-core/src/main/java/org/hibernate/procedure/internal/FunctionReturnImpl.java b/hibernate-core/src/main/java/org/hibernate/procedure/internal/FunctionReturnImpl.java index ced2938499ac..fce45e336280 100644 --- a/hibernate-core/src/main/java/org/hibernate/procedure/internal/FunctionReturnImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/procedure/internal/FunctionReturnImpl.java @@ -10,7 +10,7 @@ import org.hibernate.procedure.spi.FunctionReturnImplementor; import org.hibernate.procedure.spi.NamedCallableQueryMemento; import org.hibernate.procedure.spi.ProcedureCallImplementor; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.type.OutputableType; import org.hibernate.sql.exec.internal.JdbcCallFunctionReturnImpl.RefCurserJdbcCallFunctionReturnImpl; import org.hibernate.sql.exec.internal.JdbcCallFunctionReturnImpl.RegularJdbcCallFunctionReturnImpl; diff --git a/hibernate-core/src/main/java/org/hibernate/procedure/internal/NamedCallableQueryMementoImpl.java b/hibernate-core/src/main/java/org/hibernate/procedure/internal/NamedCallableQueryMementoImpl.java index 26b6db056690..b019056b1285 100644 --- a/hibernate-core/src/main/java/org/hibernate/procedure/internal/NamedCallableQueryMementoImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/procedure/internal/NamedCallableQueryMementoImpl.java @@ -12,7 +12,7 @@ import org.hibernate.CacheMode; import org.hibernate.FlushMode; import org.hibernate.engine.spi.SharedSessionContractImplementor; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.procedure.ProcedureCall; import org.hibernate.procedure.spi.NamedCallableQueryMemento; import org.hibernate.procedure.spi.ParameterStrategy; diff --git a/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureCallImpl.java b/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureCallImpl.java index bb5e1b99a865..1166062ac8f5 100644 --- a/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureCallImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureCallImpl.java @@ -41,9 +41,9 @@ import org.hibernate.procedure.spi.ParameterStrategy; import org.hibernate.procedure.spi.ProcedureCallImplementor; import org.hibernate.procedure.spi.ProcedureParameterImplementor; -import org.hibernate.query.BindableType; import org.hibernate.query.KeyedPage; import org.hibernate.query.KeyedResultList; +import org.hibernate.type.BindableType; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SqmBindable; import org.hibernate.type.OutputableType; @@ -89,6 +89,7 @@ import jakarta.persistence.PersistenceException; import jakarta.persistence.TemporalType; import jakarta.persistence.TransactionRequiredException; +import jakarta.persistence.metamodel.Type; import static java.lang.Boolean.parseBoolean; import static java.util.Collections.emptyList; @@ -376,7 +377,7 @@ public ProcedureCallImpl markAsFunctionCall(Class resultType) { } @Override - public ProcedureCall markAsFunctionCall(BindableType typeReference) { + public ProcedureCall markAsFunctionCall(Type typeReference) { if ( !(typeReference instanceof OutputableType outputableType) ) { throw new IllegalArgumentException( "Given type is not an OutputableType: " + typeReference ); } @@ -448,7 +449,7 @@ public ProcedureCallImplementor registerStoredProcedureParameter( @Override public ProcedureCallImplementor registerStoredProcedureParameter( int position, - BindableType type, + Type type, ParameterMode mode) { getSession().checkOpen( true ); @@ -468,7 +469,7 @@ public ProcedureCallImplementor registerStoredProcedureParameter( @Override public ProcedureCallImplementor registerStoredProcedureParameter( String parameterName, - BindableType type, + Type type, ParameterMode mode) { getSession().checkOpen( true ); try { @@ -497,16 +498,16 @@ public ProcedureParameter registerParameter(int position, Class javaTy @Override public ProcedureParameter registerParameter( int position, - BindableType typeReference, + Type typeReference, ParameterMode mode) { final SqmBindable expressible = resolveExpressible( typeReference ); final ProcedureParameterImpl procedureParameter = - new ProcedureParameterImpl<>( position, mode, typeReference.getBindableJavaType(), expressible ); + new ProcedureParameterImpl<>( position, mode, ((BindableType) typeReference).getBindableJavaType(), expressible ); registerParameter( procedureParameter ); return procedureParameter; } - private SqmBindable resolveExpressible(BindableType typeReference) { + private SqmBindable resolveExpressible(Type typeReference) { return getSessionFactory().getRuntimeMetamodels().resolveExpressible( typeReference ); } @@ -529,7 +530,7 @@ public ProcedureParameterImplementor registerParameter(String name, Class return parameter; } - private Class getExpressibleJavaType(BindableType parameterType) { + private Class getExpressibleJavaType(Type parameterType) { if ( parameterType == null ) { return null; } @@ -547,11 +548,11 @@ private NodeBuilder getNodeBuilder() { @Override public ProcedureParameterImplementor registerParameter( String name, - BindableType typeReference, + Type typeReference, ParameterMode mode) { final SqmBindable expressible = resolveExpressible( typeReference ); final ProcedureParameterImpl parameter = - new ProcedureParameterImpl<>( name, mode, typeReference.getBindableJavaType(), expressible ); + new ProcedureParameterImpl<>( name, mode, ((BindableType) typeReference).getBindableJavaType(), expressible ); registerParameter( parameter ); return parameter; } @@ -1084,7 +1085,7 @@ else if ( parseBoolean( value.toString() ) ) { //noinspection resource markAsFunctionCall( code ); } - else if ( value instanceof BindableType type ) { + else if ( value instanceof Type type ) { //noinspection resource markAsFunctionCall( type ); } @@ -1142,7 +1143,7 @@ public ProcedureCallImplementor setParameter(int position, Object value) { public

ProcedureCallImplementor setParameter( QueryParameter

parameter, P value, - BindableType

type) { + Type

type) { super.setParameter( parameter, value, type ); return this; } @@ -1154,7 +1155,7 @@ public

ProcedureCallImplementor setParameter( // } @Override - public

ProcedureCallImplementor setParameter(String name, P value, BindableType

type) { + public

ProcedureCallImplementor setParameter(String name, P value, Type

type) { super.setParameter( name, value, type ); return this; } @@ -1166,7 +1167,7 @@ public

ProcedureCallImplementor setParameter(String name, P value, Bindab // } @Override - public

ProcedureCallImplementor setParameter(int position, P value, BindableType

type) { + public

ProcedureCallImplementor setParameter(int position, P value, Type

type) { super.setParameter( position, value, type ); return this; } diff --git a/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureParameterImpl.java b/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureParameterImpl.java index a933b160214d..10c0b5b6cc94 100644 --- a/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureParameterImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureParameterImpl.java @@ -14,9 +14,9 @@ import org.hibernate.procedure.spi.ParameterStrategy; import org.hibernate.procedure.spi.ProcedureCallImplementor; import org.hibernate.procedure.spi.ProcedureParameterImplementor; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.type.OutputableType; -import org.hibernate.query.internal.BindingTypeHelper; +import org.hibernate.type.internal.BindingTypeHelper; import org.hibernate.query.spi.AbstractQueryParameter; import org.hibernate.query.spi.QueryParameterBinding; import org.hibernate.sql.exec.internal.JdbcCallParameterExtractorImpl; diff --git a/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureParameterMetadataImpl.java b/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureParameterMetadataImpl.java index dd98192a277f..ac0d02d98462 100644 --- a/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureParameterMetadataImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureParameterMetadataImpl.java @@ -17,7 +17,7 @@ import org.hibernate.engine.spi.SharedSessionContractImplementor; import org.hibernate.procedure.spi.NamedCallableQueryMemento; import org.hibernate.procedure.spi.ParameterStrategy; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.query.QueryParameter; import org.hibernate.query.internal.QueryParameterBindingsImpl; import org.hibernate.procedure.ProcedureParameter; diff --git a/hibernate-core/src/main/java/org/hibernate/procedure/spi/ProcedureCallImplementor.java b/hibernate-core/src/main/java/org/hibernate/procedure/spi/ProcedureCallImplementor.java index 8cbf0d73496d..f9530c711aec 100644 --- a/hibernate-core/src/main/java/org/hibernate/procedure/spi/ProcedureCallImplementor.java +++ b/hibernate-core/src/main/java/org/hibernate/procedure/spi/ProcedureCallImplementor.java @@ -9,7 +9,6 @@ import java.util.List; import org.hibernate.procedure.ProcedureCall; -import org.hibernate.query.BindableType; import org.hibernate.query.named.NameableQuery; import org.hibernate.query.spi.ProcedureParameterMetadataImplementor; import org.hibernate.query.spi.QueryImplementor; @@ -20,6 +19,7 @@ import jakarta.persistence.Parameter; import jakarta.persistence.ParameterMode; import jakarta.persistence.TemporalType; +import jakarta.persistence.metamodel.Type; /** * @author Steve Ebersole @@ -48,10 +48,10 @@ default List getResultList() { ProcedureCallImplementor registerStoredProcedureParameter(String parameterName, Class type, ParameterMode mode); @Override - ProcedureCallImplementor registerStoredProcedureParameter(int position, BindableType type, ParameterMode mode); + ProcedureCallImplementor registerStoredProcedureParameter(int position, Type type, ParameterMode mode); @Override - ProcedureCallImplementor registerStoredProcedureParameter(String parameterName, BindableType type, ParameterMode mode); + ProcedureCallImplementor registerStoredProcedureParameter(String parameterName, Type type, ParameterMode mode); @Override ProcedureCallImplementor setHint(String hintName, Object value); diff --git a/hibernate-core/src/main/java/org/hibernate/query/BindableType.java b/hibernate-core/src/main/java/org/hibernate/query/BindableType.java deleted file mode 100644 index 2acffa3507b1..000000000000 --- a/hibernate-core/src/main/java/org/hibernate/query/BindableType.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * Copyright Red Hat Inc. and Hibernate Authors - */ -package org.hibernate.query; - -import jakarta.persistence.metamodel.Type; -import org.hibernate.Incubating; - -/** - * Represents a type which can be bound to a {@linkplain CommonQueryContract query} - * parameter. An instance of {@code BindableType} may be passed to operations like - * {@link CommonQueryContract#setParameter(int, Object, BindableType)} and - * {@link CommonQueryContract#setParameter(String, Object, BindableType)}. - * - * @implNote Every implementation of this interface must also implement - * the SPI {@link org.hibernate.query.spi.BindableTypeImplementor}. - * - * @see org.hibernate.type.BasicTypeReference - * @see org.hibernate.type.StandardBasicTypes - * - * @author Steve Ebersole - */ -@Incubating -public interface BindableType extends Type { - /** - * The expected Java type of the argument to the query parameter. - */ - Class getBindableJavaType(); - - @Override - default Class getJavaType() { - return getBindableJavaType(); - } -} diff --git a/hibernate-core/src/main/java/org/hibernate/query/CommonQueryContract.java b/hibernate-core/src/main/java/org/hibernate/query/CommonQueryContract.java index 47c5e16d516f..3bbbb29e3db1 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/CommonQueryContract.java +++ b/hibernate-core/src/main/java/org/hibernate/query/CommonQueryContract.java @@ -17,6 +17,7 @@ import jakarta.persistence.FlushModeType; import jakarta.persistence.Parameter; import jakarta.persistence.TemporalType; +import jakarta.persistence.metamodel.Type; /** * Defines the aspects of query execution and parameter binding that apply to all @@ -227,7 +228,7 @@ public interface CommonQueryContract { * or pass a {@link TypedParameterValue}. * * @see #setParameter(String, Object, Class) - * @see #setParameter(String, Object, BindableType) + * @see #setParameter(String, Object, Type) * * @see TypedParameterValue */ @@ -235,19 +236,19 @@ public interface CommonQueryContract { /** * Bind the given argument to a named query parameter using the given - * {@link Class} reference to attempt to infer the {@link BindableType}. - * If unable to infer an appropriate {@link BindableType}, fall back to + * {@link Class} reference to attempt to infer the {@link Type}. + * If unable to infer an appropriate {@link Type}, fall back to * {@link #setParameter(String, Object)}. * - * @see #setParameter(String, Object, BindableType) + * @see #setParameter(String, Object, Type) */

CommonQueryContract setParameter(String parameter, P value, Class

type); /** * Bind the given argument to a named query parameter using the given - * {@link BindableType}. + * {@link Type}. */ -

CommonQueryContract setParameter(String parameter, P value, BindableType

type); +

CommonQueryContract setParameter(String parameter, P value, Type

type); /** * Bind an {@link Instant} to the named query parameter using just the @@ -282,7 +283,7 @@ public interface CommonQueryContract { * or pass a {@link TypedParameterValue}. * * @see #setParameter(int, Object, Class) - * @see #setParameter(int, Object, BindableType) + * @see #setParameter(int, Object, Type) * * @see TypedParameterValue */ @@ -290,19 +291,19 @@ public interface CommonQueryContract { /** * Bind the given argument to an ordinal query parameter using the given - * {@link Class} reference to attempt to infer the {@link BindableType}. - * If unable to infer an appropriate {@link BindableType}, fall back to + * {@link Class} reference to attempt to infer the {@link Type}. + * If unable to infer an appropriate {@link Type}, fall back to * {@link #setParameter(int, Object)}. * - * @see #setParameter(int, Object, BindableType) + * @see #setParameter(int, Object, Type) */

CommonQueryContract setParameter(int parameter, P value, Class

type); /** * Bind the given argument to an ordinal query parameter using the given - * {@link BindableType}. + * {@link Type}. */ -

CommonQueryContract setParameter(int parameter, P value, BindableType

type); +

CommonQueryContract setParameter(int parameter, P value, Type

type); /** * Bind an {@link Instant} to an ordinal query parameter using just the @@ -336,7 +337,7 @@ public interface CommonQueryContract { * If the type of the parameter cannot be inferred from the context in * which it occurs, use one of the overloads which accepts a "type". * - * @see #setParameter(QueryParameter, Object, BindableType) + * @see #setParameter(QueryParameter, Object, Type) * * @param parameter the query parameter memento * @param value the argument, which might be null @@ -348,30 +349,30 @@ public interface CommonQueryContract { /** * Bind an argument to the query parameter represented by the given * {@link QueryParameter}, using the given {@link Class} reference to attempt - * to infer the {@link BindableType} to use. If unable to infer an appropriate - * {@link BindableType}, fall back to {@link #setParameter(QueryParameter, Object)}. + * to infer the {@link Type} to use. If unable to infer an appropriate + * {@link Type}, fall back to {@link #setParameter(QueryParameter, Object)}. * * @param parameter the query parameter memento * @param value the argument, which might be null - * @param type a {@link BindableType} representing the type of the parameter + * @param type a {@link Type} representing the type of the parameter * * @return {@code this}, for method chaining * - * @see #setParameter(QueryParameter, Object, BindableType) + * @see #setParameter(QueryParameter, Object, Type) */

CommonQueryContract setParameter(QueryParameter

parameter, P value, Class

type); /** * Bind an argument to the query parameter represented by the given - * {@link QueryParameter}, using the given {@link BindableType}. + * {@link QueryParameter}, using the given {@link Type}. * * @param parameter the query parameter memento * @param val the argument, which might be null - * @param type a {@link BindableType} representing the type of the parameter + * @param type a {@link Type} representing the type of the parameter * * @return {@code this}, for method chaining */ -

CommonQueryContract setParameter(QueryParameter

parameter, P val, BindableType

type); +

CommonQueryContract setParameter(QueryParameter

parameter, P val, Type

type); /** * @see jakarta.persistence.Query#setParameter(Parameter, Object) @@ -400,7 +401,7 @@ public interface CommonQueryContract { * The "type mapping" for the binding is inferred from the type of * the first collection element. * - * @see #setParameterList(java.lang.String, java.util.Collection, BindableType) + * @see #setParameterList(java.lang.String, java.util.Collection, Type) * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. @@ -411,11 +412,11 @@ public interface CommonQueryContract { /** * Bind multiple arguments to a named query parameter using the given - * {@link Class} reference to attempt to infer the {@link BindableType} - * If unable to infer an appropriate {@link BindableType}, fall back to + * {@link Class} reference to attempt to infer the {@link Type} + * If unable to infer an appropriate {@link Type}, fall back to * {@link #setParameterList(String, Collection)}. * - * @see #setParameterList(java.lang.String, java.util.Collection, BindableType) + * @see #setParameterList(java.lang.String, java.util.Collection, Type) * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. @@ -426,14 +427,14 @@ public interface CommonQueryContract { /** * Bind multiple arguments to a named query parameter using the given - * {@link BindableType}. + * {@link Type}. * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. * * @return {@code this}, for method chaining */ -

CommonQueryContract setParameterList(String parameter, Collection values, BindableType

type); +

CommonQueryContract setParameterList(String parameter, Collection values, Type

type); /** @@ -451,11 +452,11 @@ public interface CommonQueryContract { /** * Bind multiple arguments to a named query parameter using the given - * Class reference to attempt to determine the {@link BindableType} - * to use. If unable to determine an appropriate {@link BindableType}, + * Class reference to attempt to determine the {@link Type} + * to use. If unable to determine an appropriate {@link Type}, * {@link #setParameterList(String, Collection)} is used * - * @see #setParameterList(java.lang.String, Object[], BindableType) + * @see #setParameterList(java.lang.String, Object[], Type) * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. @@ -467,14 +468,14 @@ public interface CommonQueryContract { /** * Bind multiple arguments to a named query parameter using the given - * {@link BindableType}. + * {@link Type}. * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. * * @return {@code this}, for method chaining */ -

CommonQueryContract setParameterList(String parameter, P[] values, BindableType

type); +

CommonQueryContract setParameterList(String parameter, P[] values, Type

type); /** * Bind multiple arguments to an ordinal query parameter. @@ -491,11 +492,11 @@ public interface CommonQueryContract { /** * Bind multiple arguments to an ordinal query parameter using the given - * {@link Class} reference to attempt to infer the {@link BindableType}. - * If unable to infer an appropriate {@link BindableType}, fall back to + * {@link Class} reference to attempt to infer the {@link Type}. + * If unable to infer an appropriate {@link Type}, fall back to * {@link #setParameterList(String, Collection)}. * - * @see #setParameterList(int, Collection, BindableType) + * @see #setParameterList(int, Collection, Type) * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. @@ -506,14 +507,14 @@ public interface CommonQueryContract { /** * Bind multiple arguments to an ordinal query parameter using the given - * {@link BindableType}. + * {@link Type}. * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. * * @return {@code this}, for method chaining */ -

CommonQueryContract setParameterList(int parameter, Collection values, BindableType

type); +

CommonQueryContract setParameterList(int parameter, Collection values, Type

type); /** * Bind multiple arguments to an ordinal query parameter. @@ -530,11 +531,11 @@ public interface CommonQueryContract { /** * Bind multiple arguments to an ordinal query parameter using the given - * {@link Class} reference to attempt to infer the {@link BindableType}. - * If unable to infer an appropriate {@link BindableType}, fall back to + * {@link Class} reference to attempt to infer the {@link Type}. + * If unable to infer an appropriate {@link Type}, fall back to * {@link #setParameterList(String, Collection)}. * - * @see #setParameterList(int, Object[], BindableType) + * @see #setParameterList(int, Object[], Type) * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. @@ -545,14 +546,14 @@ public interface CommonQueryContract { /** * Bind multiple arguments to an ordinal query parameter using the given - * {@link BindableType}. + * {@link Type}. * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. * * @return {@code this}, for method chaining */ -

CommonQueryContract setParameterList(int parameter, P[] values, BindableType

type); +

CommonQueryContract setParameterList(int parameter, P[] values, Type

type); /** * Bind multiple arguments to the query parameter represented by the @@ -571,11 +572,11 @@ public interface CommonQueryContract { /** * Bind multiple arguments to the query parameter represented by the * given {@link QueryParameter} using the given {@link Class} reference - * to attempt to infer the {@link BindableType} to use. If unable to - * infer an appropriate {@link BindableType}, fall back to using + * to attempt to infer the {@link Type} to use. If unable to + * infer an appropriate {@link Type}, fall back to using * {@link #setParameterList(String, Collection)}. * - * @see #setParameterList(QueryParameter, java.util.Collection, BindableType) + * @see #setParameterList(QueryParameter, java.util.Collection, Type) * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. @@ -586,14 +587,14 @@ public interface CommonQueryContract { /** * Bind multiple arguments to the query parameter represented by the - * given {@link QueryParameter}, using the given {@link BindableType}. + * given {@link QueryParameter}, using the given {@link Type}. * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. * * @return {@code this}, for method chaining */ -

CommonQueryContract setParameterList(QueryParameter

parameter, Collection values, BindableType

type); +

CommonQueryContract setParameterList(QueryParameter

parameter, Collection values, Type

type); /** * Bind multiple arguments to the query parameter represented by the @@ -613,11 +614,11 @@ public interface CommonQueryContract { /** * Bind multiple arguments to the query parameter represented by the * given {@link QueryParameter} using the given {@link Class} reference - * to attempt to infer the {@link BindableType} to use. If unable to - * infer an appropriate {@link BindableType}, fall back to using + * to attempt to infer the {@link Type} to use. If unable to + * infer an appropriate {@link Type}, fall back to using * {@link #setParameterList(String, Collection)}. * - * @see #setParameterList(QueryParameter, Object[], BindableType) + * @see #setParameterList(QueryParameter, Object[], Type) * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. @@ -628,14 +629,14 @@ public interface CommonQueryContract { /** * Bind multiple arguments to the query parameter represented by the - * given {@link QueryParameter}, using the given the {@link BindableType}. + * given {@link QueryParameter}, using the given the {@link Type}. * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. * * @return {@code this}, for method chaining */ -

CommonQueryContract setParameterList(QueryParameter

parameter, P[] values, BindableType

type); +

CommonQueryContract setParameterList(QueryParameter

parameter, P[] values, Type

type); /** * Bind the property values of the given bean to named parameters of diff --git a/hibernate-core/src/main/java/org/hibernate/query/MutationQuery.java b/hibernate-core/src/main/java/org/hibernate/query/MutationQuery.java index ae9ce0c97099..2826c65f07b5 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/MutationQuery.java +++ b/hibernate-core/src/main/java/org/hibernate/query/MutationQuery.java @@ -16,6 +16,7 @@ import jakarta.persistence.FlushModeType; import jakarta.persistence.Parameter; import jakarta.persistence.TemporalType; +import jakarta.persistence.metamodel.Type; /** * Within the context of an active {@linkplain org.hibernate.Session session}, @@ -105,7 +106,7 @@ public interface MutationQuery extends CommonQueryContract {

MutationQuery setParameter(String name, P value, Class

type); @Override -

MutationQuery setParameter(String name, P value, BindableType

type); +

MutationQuery setParameter(String name, P value, Type

type); @Override @Deprecated(since = "7") MutationQuery setParameter(String name, Instant value, TemporalType temporalType); @@ -123,7 +124,7 @@ public interface MutationQuery extends CommonQueryContract {

MutationQuery setParameter(int position, P value, Class

type); @Override -

MutationQuery setParameter(int position, P value, BindableType

type); +

MutationQuery setParameter(int position, P value, Type

type); @Override @Deprecated(since = "7") MutationQuery setParameter(int position, Instant value, TemporalType temporalType); @@ -141,7 +142,7 @@ public interface MutationQuery extends CommonQueryContract {

MutationQuery setParameter(QueryParameter

parameter, P value, Class

type); @Override -

MutationQuery setParameter(QueryParameter

parameter, P val, BindableType

type); +

MutationQuery setParameter(QueryParameter

parameter, P val, Type

type); @Override MutationQuery setParameter(Parameter param, T value); @@ -159,7 +160,7 @@ public interface MutationQuery extends CommonQueryContract {

MutationQuery setParameterList(String name, Collection values, Class

javaType); @Override -

MutationQuery setParameterList(String name, Collection values, BindableType

type); +

MutationQuery setParameterList(String name, Collection values, Type

type); @Override MutationQuery setParameterList(String name, Object[] values); @@ -168,7 +169,7 @@ public interface MutationQuery extends CommonQueryContract {

MutationQuery setParameterList(String name, P[] values, Class

javaType); @Override -

MutationQuery setParameterList(String name, P[] values, BindableType

type); +

MutationQuery setParameterList(String name, P[] values, Type

type); @Override MutationQuery setParameterList(int position, @SuppressWarnings("rawtypes") Collection values); @@ -177,7 +178,7 @@ public interface MutationQuery extends CommonQueryContract {

MutationQuery setParameterList(int position, Collection values, Class

javaType); @Override -

MutationQuery setParameterList(int position, Collection values, BindableType

type); +

MutationQuery setParameterList(int position, Collection values, Type

type); @Override MutationQuery setParameterList(int position, Object[] values); @@ -186,7 +187,7 @@ public interface MutationQuery extends CommonQueryContract {

MutationQuery setParameterList(int position, P[] values, Class

javaType); @Override -

MutationQuery setParameterList(int position, P[] values, BindableType

type); +

MutationQuery setParameterList(int position, P[] values, Type

type); @Override

MutationQuery setParameterList(QueryParameter

parameter, Collection values); @@ -195,7 +196,7 @@ public interface MutationQuery extends CommonQueryContract {

MutationQuery setParameterList(QueryParameter

parameter, Collection values, Class

javaType); @Override -

MutationQuery setParameterList(QueryParameter

parameter, Collection values, BindableType

type); +

MutationQuery setParameterList(QueryParameter

parameter, Collection values, Type

type); @Override

MutationQuery setParameterList(QueryParameter

parameter, P[] values); @@ -204,7 +205,7 @@ public interface MutationQuery extends CommonQueryContract {

MutationQuery setParameterList(QueryParameter

parameter, P[] values, Class

javaType); @Override -

MutationQuery setParameterList(QueryParameter

parameter, P[] values, BindableType

type); +

MutationQuery setParameterList(QueryParameter

parameter, P[] values, Type

type); @Override MutationQuery setProperties(Object bean); diff --git a/hibernate-core/src/main/java/org/hibernate/query/NativeQuery.java b/hibernate-core/src/main/java/org/hibernate/query/NativeQuery.java index e485354f7228..0f9d7f05208a 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/NativeQuery.java +++ b/hibernate-core/src/main/java/org/hibernate/query/NativeQuery.java @@ -14,6 +14,7 @@ import jakarta.persistence.TemporalType; import jakarta.persistence.Timeout; import jakarta.persistence.metamodel.SingularAttribute; +import jakarta.persistence.metamodel.Type; import org.hibernate.CacheMode; import org.hibernate.FlushMode; @@ -727,7 +728,7 @@ interface FetchReturn extends ResultNode {

NativeQuery setParameter(String name, P val, Class

type); @Override -

NativeQuery setParameter(String name, P val, BindableType

type); +

NativeQuery setParameter(String name, P val, Type

type); @Override @Deprecated(since = "7") NativeQuery setParameter(String name, Instant value, TemporalType temporalType); @@ -745,7 +746,7 @@ interface FetchReturn extends ResultNode {

NativeQuery setParameter(int position, P val, Class

type); @Override -

NativeQuery setParameter(int position, P val, BindableType

type); +

NativeQuery setParameter(int position, P val, Type

type); @Override @Deprecated(since = "7") NativeQuery setParameter(int position, Instant value, TemporalType temporalType); @@ -763,7 +764,7 @@ interface FetchReturn extends ResultNode {

NativeQuery setParameter(QueryParameter

parameter, P val, Class

type); @Override -

NativeQuery setParameter(QueryParameter

parameter, P val, BindableType

type); +

NativeQuery setParameter(QueryParameter

parameter, P val, Type

type); @Override

NativeQuery setParameter(Parameter

param, P value); @@ -781,7 +782,7 @@ interface FetchReturn extends ResultNode {

NativeQuery setParameterList(String name, Collection values, Class

type); @Override -

NativeQuery setParameterList(String name, Collection values, BindableType

type); +

NativeQuery setParameterList(String name, Collection values, Type

type); @Override NativeQuery setParameterList(String name, Object[] values); @@ -790,7 +791,7 @@ interface FetchReturn extends ResultNode {

NativeQuery setParameterList(String name, P[] values, Class

type); @Override -

NativeQuery setParameterList(String name, P[] values, BindableType

type); +

NativeQuery setParameterList(String name, P[] values, Type

type); @Override NativeQuery setParameterList(int position, @SuppressWarnings("rawtypes") Collection values); @@ -799,7 +800,7 @@ interface FetchReturn extends ResultNode {

NativeQuery setParameterList(int position, Collection values, Class

type); @Override -

NativeQuery setParameterList(int position, Collection values, BindableType

javaType); +

NativeQuery setParameterList(int position, Collection values, Type

javaType); @Override NativeQuery setParameterList(int position, Object[] values); @@ -808,7 +809,7 @@ interface FetchReturn extends ResultNode {

NativeQuery setParameterList(int position, P[] values, Class

javaType); @Override -

NativeQuery setParameterList(int position, P[] values, BindableType

javaType); +

NativeQuery setParameterList(int position, P[] values, Type

javaType); @Override

NativeQuery setParameterList(QueryParameter

parameter, Collection values); @@ -817,7 +818,7 @@ interface FetchReturn extends ResultNode {

NativeQuery setParameterList(QueryParameter

parameter, Collection values, Class

javaType); @Override -

NativeQuery setParameterList(QueryParameter

parameter, Collection values, BindableType

type); +

NativeQuery setParameterList(QueryParameter

parameter, Collection values, Type

type); @Override

NativeQuery setParameterList(QueryParameter

parameter, P[] values); @@ -826,7 +827,7 @@ interface FetchReturn extends ResultNode {

NativeQuery setParameterList(QueryParameter

parameter, P[] values, Class

javaType); @Override -

NativeQuery setParameterList(QueryParameter

parameter, P[] values, BindableType

type); +

NativeQuery setParameterList(QueryParameter

parameter, P[] values, Type

type); @Override NativeQuery setProperties(Object bean); diff --git a/hibernate-core/src/main/java/org/hibernate/query/ParameterMetadata.java b/hibernate-core/src/main/java/org/hibernate/query/ParameterMetadata.java index d064cb66efb4..01854d1b527d 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/ParameterMetadata.java +++ b/hibernate-core/src/main/java/org/hibernate/query/ParameterMetadata.java @@ -7,9 +7,11 @@ import java.util.Collection; import java.util.Set; import java.util.function.Consumer; + import jakarta.persistence.Parameter; import org.hibernate.Incubating; +import org.hibernate.type.BindableType; /** diff --git a/hibernate-core/src/main/java/org/hibernate/query/Query.java b/hibernate-core/src/main/java/org/hibernate/query/Query.java index f25af16d5ac7..e46a1af45444 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/Query.java +++ b/hibernate-core/src/main/java/org/hibernate/query/Query.java @@ -38,6 +38,7 @@ import jakarta.persistence.Parameter; import jakarta.persistence.TemporalType; import jakarta.persistence.TypedQuery; +import jakarta.persistence.metamodel.Type; /** * Within the context of an active {@linkplain org.hibernate.Session session}, @@ -456,26 +457,26 @@ default Query applyLoadGraph(@SuppressWarnings("rawtypes") RootGraph graph) { * in which it occurs, use one of the forms accept a "type". * * @see #setParameter(String, Object, Class) - * @see #setParameter(String, Object, BindableType) + * @see #setParameter(String, Object, Type) */ @Override Query setParameter(String parameter, Object argument); /** * Bind the given argument to a named query parameter using the given - * Class reference to attempt to determine the {@link BindableType} - * to use. If unable to determine an appropriate {@link BindableType}, + * Class reference to attempt to determine the {@link Type} + * to use. If unable to determine an appropriate {@link Type}, * {@link #setParameter(String, Object)} is used. * - * @see #setParameter(String, Object, BindableType) + * @see #setParameter(String, Object, Type) */

Query setParameter(String parameter, P argument, Class

type); /** * Bind the given argument to a named query parameter using the given - * {@link BindableType}. + * {@link Type}. */ -

Query setParameter(String parameter, P argument, BindableType

type); +

Query setParameter(String parameter, P argument, Type

type); /** * Bind an {@link Instant} value to the named query parameter using @@ -505,26 +506,26 @@ default Query applyLoadGraph(@SuppressWarnings("rawtypes") RootGraph graph) { * which it occurs, use one of the forms which accepts a "type". * * @see #setParameter(int, Object, Class) - * @see #setParameter(int, Object, BindableType) + * @see #setParameter(int, Object, Type) */ @Override Query setParameter(int parameter, Object argument); /** * Bind the given argument to an ordinal query parameter using the given - * Class reference to attempt to determine the {@link BindableType} - * to use. If unable to determine an appropriate {@link BindableType}, + * Class reference to attempt to determine the {@link Type} + * to use. If unable to determine an appropriate {@link Type}, * {@link #setParameter(int, Object)} is used. * - * @see #setParameter(int, Object, BindableType) + * @see #setParameter(int, Object, Type) */

Query setParameter(int parameter, P argument, Class

type); /** * Bind the given argument to an ordinal query parameter using the given - * {@link BindableType}. + * {@link Type}. */ -

Query setParameter(int parameter, P argument, BindableType

type); +

Query setParameter(int parameter, P argument, Type

type); /** * Bind an {@link Instant} value to the ordinal query parameter using @@ -552,7 +553,7 @@ default Query applyLoadGraph(@SuppressWarnings("rawtypes") RootGraph graph) { * If the type of the parameter cannot be inferred from the context in * which it occurs, use one of the forms which accepts a "type". * - * @see #setParameter(QueryParameter, Object, BindableType) + * @see #setParameter(QueryParameter, Object, Type) * * @param parameter the query parameter memento * @param argument the argument, which might be null @@ -564,30 +565,30 @@ default Query applyLoadGraph(@SuppressWarnings("rawtypes") RootGraph graph) { /** * Bind an argument to the query parameter represented by the given * {@link QueryParameter} using the given Class reference to attempt to - * determine the {@link BindableType} to use. If unable to determine - * an appropriate {@link BindableType}, {@link #setParameter(QueryParameter, Object)} is used + * determine the {@link Type} to use. If unable to determine + * an appropriate {@link Type}, {@link #setParameter(QueryParameter, Object)} is used * * @param parameter the query parameter memento * @param argument the argument, which might be null - * @param type a {@link BindableType} representing the type of the parameter + * @param type a {@link Type} representing the type of the parameter * * @return {@code this}, for method chaining * - * @see #setParameter(QueryParameter, Object, BindableType) + * @see #setParameter(QueryParameter, Object, Type) */

Query setParameter(QueryParameter

parameter, P argument, Class

type); /** * Bind an argument to the query parameter represented by the given - * {@link QueryParameter} using the given {@link BindableType}. + * {@link QueryParameter} using the given {@link Type}. * * @param parameter the query parameter memento * @param argument the argument, which might be null - * @param type an {@link BindableType} representing the type of the parameter + * @param type an {@link Type} representing the type of the parameter * * @return {@code this}, for method chaining */ -

Query setParameter(QueryParameter

parameter, P argument, BindableType

type); +

Query setParameter(QueryParameter

parameter, P argument, Type

type); /** * {@link jakarta.persistence.Query} override @@ -615,7 +616,7 @@ default Query applyLoadGraph(@SuppressWarnings("rawtypes") RootGraph graph) { * The "type mapping" for the binding is inferred from the type of * the first collection element. * - * @see #setParameterList(java.lang.String, java.util.Collection, BindableType) + * @see #setParameterList(java.lang.String, java.util.Collection, Type) * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. @@ -626,11 +627,11 @@ default Query applyLoadGraph(@SuppressWarnings("rawtypes") RootGraph graph) { /** * Bind multiple arguments to a named query parameter using the given - * Class reference to attempt to determine the {@link BindableType} - * to use. If unable to determine an appropriate {@link BindableType}, + * Class reference to attempt to determine the {@link Type} + * to use. If unable to determine an appropriate {@link Type}, * {@link #setParameterList(String, Collection)} is used. * - * @see #setParameterList(java.lang.String, java.util.Collection, BindableType) + * @see #setParameterList(java.lang.String, java.util.Collection, Type) * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. @@ -641,14 +642,14 @@ default Query applyLoadGraph(@SuppressWarnings("rawtypes") RootGraph graph) { /** * Bind multiple arguments to a named query parameter using the given - * {@link BindableType}. + * {@link Type}. * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. * * @return {@code this}, for method chaining */ -

Query setParameterList(String parameter, Collection arguments, BindableType

type); +

Query setParameterList(String parameter, Collection arguments, Type

type); /** @@ -666,11 +667,11 @@ default Query applyLoadGraph(@SuppressWarnings("rawtypes") RootGraph graph) { /** * Bind multiple arguments to a named query parameter using the given - * Class reference to attempt to determine the {@link BindableType} - * to use. If unable to determine an appropriate {@link BindableType}, + * Class reference to attempt to determine the {@link Type} + * to use. If unable to determine an appropriate {@link Type}, * {@link #setParameterList(String, Collection)} is used. * - * @see #setParameterList(java.lang.String, Object[], BindableType) + * @see #setParameterList(java.lang.String, Object[], Type) * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. @@ -682,14 +683,14 @@ default Query applyLoadGraph(@SuppressWarnings("rawtypes") RootGraph graph) { /** * Bind multiple arguments to a named query parameter using the given - * {@link BindableType}. + * {@link Type}. * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. * * @return {@code this}, for method chaining */ -

Query setParameterList(String parameter, P[] arguments, BindableType

type); +

Query setParameterList(String parameter, P[] arguments, Type

type); /** * Bind multiple arguments to an ordinal query parameter. @@ -706,11 +707,11 @@ default Query applyLoadGraph(@SuppressWarnings("rawtypes") RootGraph graph) { /** * Bind multiple arguments to an ordinal query parameter using the given - * Class reference to attempt to determine the {@link BindableType} - * to use. If unable to determine an appropriate {@link BindableType}, + * Class reference to attempt to determine the {@link Type} + * to use. If unable to determine an appropriate {@link Type}, * {@link #setParameterList(String, Collection)} is used. * - * @see #setParameterList(int, Collection, BindableType) + * @see #setParameterList(int, Collection, Type) * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. @@ -721,14 +722,14 @@ default Query applyLoadGraph(@SuppressWarnings("rawtypes") RootGraph graph) { /** * Bind multiple arguments to an ordinal query parameter using the given - * {@link BindableType}. + * {@link Type}. * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. * * @return {@code this}, for method chaining */ -

Query setParameterList(int parameter, Collection arguments, BindableType

type); +

Query setParameterList(int parameter, Collection arguments, Type

type); /** * Bind multiple arguments to an ordinal query parameter. @@ -745,11 +746,11 @@ default Query applyLoadGraph(@SuppressWarnings("rawtypes") RootGraph graph) { /** * Bind multiple arguments to an ordinal query parameter using the given - * {@link Class} reference to attempt to determine the {@link BindableType} - * to use. If unable to determine an appropriate {@link BindableType}, + * {@link Class} reference to attempt to determine the {@link Type} + * to use. If unable to determine an appropriate {@link Type}, * {@link #setParameterList(String, Collection)} is used. * - * @see #setParameterList(int, Object[], BindableType) + * @see #setParameterList(int, Object[], Type) * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. @@ -760,14 +761,14 @@ default Query applyLoadGraph(@SuppressWarnings("rawtypes") RootGraph graph) { /** * Bind multiple arguments to an ordinal query parameter using the given - * {@link BindableType}. + * {@link Type}. * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. * * @return {@code this}, for method chaining */ -

Query setParameterList(int parameter, P[] arguments, BindableType

type); +

Query setParameterList(int parameter, P[] arguments, Type

type); /** * Bind multiple arguments to the query parameter represented by the given @@ -786,11 +787,11 @@ default Query applyLoadGraph(@SuppressWarnings("rawtypes") RootGraph graph) { /** * Bind multiple arguments to the query parameter represented by the given * {@link QueryParameter} using the given Class reference to attempt to - * determine the {@link BindableType} to use. If unable to determine an - * appropriate {@link BindableType}, {@link #setParameterList(String, Collection)} + * determine the {@link Type} to use. If unable to determine an + * appropriate {@link Type}, {@link #setParameterList(String, Collection)} * is used. * - * @see #setParameterList(QueryParameter, java.util.Collection, BindableType) + * @see #setParameterList(QueryParameter, java.util.Collection, Type) * * @apiNote This is used for binding a list of values to an expression such * as {@code entity.field in (:values)}. @@ -801,7 +802,7 @@ default Query applyLoadGraph(@SuppressWarnings("rawtypes") RootGraph graph) { /** * Bind multiple arguments to the query parameter represented by the given - * {@link QueryParameter}, inferring the {@link BindableType}. + * {@link QueryParameter}, inferring the {@link Type}. *

* The "type mapping" for the binding is inferred from the type of the first * collection element. @@ -811,7 +812,7 @@ default Query applyLoadGraph(@SuppressWarnings("rawtypes") RootGraph graph) { * * @return {@code this}, for method chaining */ -

Query setParameterList(QueryParameter

parameter, Collection arguments, BindableType

type); +

Query setParameterList(QueryParameter

parameter, Collection arguments, Type

type); /** * Bind multiple arguments to the query parameter represented by the @@ -831,11 +832,11 @@ default Query applyLoadGraph(@SuppressWarnings("rawtypes") RootGraph graph) { /** * Bind multiple arguments to the query parameter represented by the * given {@link QueryParameter} using the given {@code Class} reference - * to attempt to determine the {@link BindableType} to use. If unable to - * determine an appropriate {@link BindableType}, + * to attempt to determine the {@link Type} to use. If unable to + * determine an appropriate {@link Type}, * {@link #setParameterList(String, Collection)} is used. * - * @see #setParameterList(QueryParameter, Object[], BindableType) + * @see #setParameterList(QueryParameter, Object[], Type) * * @apiNote This is used for binding a list of values to an expression * such as {@code entity.field in (:values)}. @@ -846,7 +847,7 @@ default Query applyLoadGraph(@SuppressWarnings("rawtypes") RootGraph graph) { /** * Bind multiple arguments to the query parameter represented by the - * given {@link QueryParameter}, inferring the {@link BindableType}. + * given {@link QueryParameter}, inferring the {@link Type}. *

* The "type mapping" for the binding is inferred from the type of * the first collection element @@ -856,7 +857,7 @@ default Query applyLoadGraph(@SuppressWarnings("rawtypes") RootGraph graph) { * * @return {@code this}, for method chaining */ -

Query setParameterList(QueryParameter

parameter, P[] arguments, BindableType

type); +

Query setParameterList(QueryParameter

parameter, P[] arguments, Type

type); /** * Bind the property values of the given bean to named parameters of the query, diff --git a/hibernate-core/src/main/java/org/hibernate/query/QueryParameter.java b/hibernate-core/src/main/java/org/hibernate/query/QueryParameter.java index ee116321ca1f..fc12cbdde192 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/QueryParameter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/QueryParameter.java @@ -5,6 +5,7 @@ package org.hibernate.query; import org.hibernate.Incubating; +import org.hibernate.type.BindableType; /** * Represents a parameter defined in the source (HQL/JPQL or criteria) query. diff --git a/hibernate-core/src/main/java/org/hibernate/query/SelectionQuery.java b/hibernate-core/src/main/java/org/hibernate/query/SelectionQuery.java index 9c237b58af20..82684abd7f3d 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/SelectionQuery.java +++ b/hibernate-core/src/main/java/org/hibernate/query/SelectionQuery.java @@ -28,12 +28,13 @@ import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.UnknownProfileException; +import org.hibernate.graph.GraphSemantic; import jakarta.persistence.FlushModeType; import jakarta.persistence.LockModeType; import jakarta.persistence.Parameter; import jakarta.persistence.TemporalType; -import org.hibernate.graph.GraphSemantic; +import jakarta.persistence.metamodel.Type; /** * Within the context of an active {@linkplain org.hibernate.Session session}, @@ -624,7 +625,7 @@ default Stream stream() {

SelectionQuery setParameter(String name, P value, Class

type); @Override -

SelectionQuery setParameter(String name, P value, BindableType

type); +

SelectionQuery setParameter(String name, P value, Type

type); @Override @Deprecated SelectionQuery setParameter(String name, Instant value, TemporalType temporalType); @@ -642,7 +643,7 @@ default Stream stream() {

SelectionQuery setParameter(int position, P value, Class

type); @Override -

SelectionQuery setParameter(int position, P value, BindableType

type); +

SelectionQuery setParameter(int position, P value, Type

type); @Override @Deprecated SelectionQuery setParameter(int position, Instant value, TemporalType temporalType); @@ -660,7 +661,7 @@ default Stream stream() {

SelectionQuery setParameter(QueryParameter

parameter, P value, Class

type); @Override -

SelectionQuery setParameter(QueryParameter

parameter, P val, BindableType

type); +

SelectionQuery setParameter(QueryParameter

parameter, P val, Type

type); @Override SelectionQuery setParameter(Parameter param, T value); @@ -678,7 +679,7 @@ default Stream stream() {

SelectionQuery setParameterList(String name, Collection values, Class

javaType); @Override -

SelectionQuery setParameterList(String name, Collection values, BindableType

type); +

SelectionQuery setParameterList(String name, Collection values, Type

type); @Override SelectionQuery setParameterList(String name, Object[] values); @@ -687,7 +688,7 @@ default Stream stream() {

SelectionQuery setParameterList(String name, P[] values, Class

javaType); @Override -

SelectionQuery setParameterList(String name, P[] values, BindableType

type); +

SelectionQuery setParameterList(String name, P[] values, Type

type); @Override SelectionQuery setParameterList(int position, @SuppressWarnings("rawtypes") Collection values); @@ -696,7 +697,7 @@ default Stream stream() {

SelectionQuery setParameterList(int position, Collection values, Class

javaType); @Override -

SelectionQuery setParameterList(int position, Collection values, BindableType

type); +

SelectionQuery setParameterList(int position, Collection values, Type

type); @Override SelectionQuery setParameterList(int position, Object[] values); @@ -705,7 +706,7 @@ default Stream stream() {

SelectionQuery setParameterList(int position, P[] values, Class

javaType); @Override -

SelectionQuery setParameterList(int position, P[] values, BindableType

type); +

SelectionQuery setParameterList(int position, P[] values, Type

type); @Override

SelectionQuery setParameterList(QueryParameter

parameter, Collection values); @@ -714,7 +715,7 @@ default Stream stream() {

SelectionQuery setParameterList(QueryParameter

parameter, Collection values, Class

javaType); @Override -

SelectionQuery setParameterList(QueryParameter

parameter, Collection values, BindableType

type); +

SelectionQuery setParameterList(QueryParameter

parameter, Collection values, Type

type); @Override

SelectionQuery setParameterList(QueryParameter

parameter, P[] values); @@ -723,7 +724,7 @@ default Stream stream() {

SelectionQuery setParameterList(QueryParameter

parameter, P[] values, Class

javaType); @Override -

SelectionQuery setParameterList(QueryParameter

parameter, P[] values, BindableType

type); +

SelectionQuery setParameterList(QueryParameter

parameter, P[] values, Type

type); @Override SelectionQuery setProperties(Object bean); diff --git a/hibernate-core/src/main/java/org/hibernate/query/TypedParameterValue.java b/hibernate-core/src/main/java/org/hibernate/query/TypedParameterValue.java index 87270913bf5e..311c30b54378 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/TypedParameterValue.java +++ b/hibernate-core/src/main/java/org/hibernate/query/TypedParameterValue.java @@ -4,7 +4,7 @@ */ package org.hibernate.query; - +import org.hibernate.type.BindableType; import org.hibernate.type.BasicTypeReference; import java.util.Objects; diff --git a/hibernate-core/src/main/java/org/hibernate/query/hql/spi/SqmQueryImplementor.java b/hibernate-core/src/main/java/org/hibernate/query/hql/spi/SqmQueryImplementor.java index 693bff142094..30865b9f02ba 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/hql/spi/SqmQueryImplementor.java +++ b/hibernate-core/src/main/java/org/hibernate/query/hql/spi/SqmQueryImplementor.java @@ -17,7 +17,6 @@ import org.hibernate.LockOptions; import org.hibernate.graph.GraphSemantic; import org.hibernate.graph.RootGraph; -import org.hibernate.query.BindableType; import org.hibernate.query.QueryParameter; import org.hibernate.query.ResultListTransformer; import org.hibernate.query.TupleTransformer; @@ -33,6 +32,7 @@ import jakarta.persistence.LockModeType; import jakarta.persistence.Parameter; import jakarta.persistence.TemporalType; +import jakarta.persistence.metamodel.Type; /** * {@link QueryImplementor} specialization for SQM-based Query references @@ -137,7 +137,7 @@ default SqmQueryImplementor setResultTransformer(ResultTransformer tra

SqmQueryImplementor setParameter(String name, P value, Class

type); @Override -

SqmQueryImplementor setParameter(String name, P value, BindableType

type); +

SqmQueryImplementor setParameter(String name, P value, Type

type); @Override @Deprecated SqmQueryImplementor setParameter(String name, Instant value, TemporalType temporalType); @@ -155,7 +155,7 @@ default SqmQueryImplementor setResultTransformer(ResultTransformer tra

SqmQueryImplementor setParameter(int position, P value, Class

type); @Override -

SqmQueryImplementor setParameter(int position, P value, BindableType

type); +

SqmQueryImplementor setParameter(int position, P value, Type

type); @Override @Deprecated SqmQueryImplementor setParameter(int position, Instant value, TemporalType temporalType); @@ -173,7 +173,7 @@ default SqmQueryImplementor setResultTransformer(ResultTransformer tra

SqmQueryImplementor setParameter(QueryParameter

parameter, P value, Class

type); @Override -

SqmQueryImplementor setParameter(QueryParameter

parameter, P val, BindableType

type); +

SqmQueryImplementor setParameter(QueryParameter

parameter, P val, Type

type); @Override SqmQueryImplementor setParameter(Parameter param, T value); @@ -191,7 +191,7 @@ default SqmQueryImplementor setResultTransformer(ResultTransformer tra

SqmQueryImplementor setParameterList(String name, Collection values, Class

javaType); @Override -

SqmQueryImplementor setParameterList(String name, Collection values, BindableType

type); +

SqmQueryImplementor setParameterList(String name, Collection values, Type

type); @Override SqmQueryImplementor setParameterList(String name, Object[] values); @@ -200,7 +200,7 @@ default SqmQueryImplementor setResultTransformer(ResultTransformer tra

SqmQueryImplementor setParameterList(String name, P[] values, Class

javaType); @Override -

SqmQueryImplementor setParameterList(String name, P[] values, BindableType

type); +

SqmQueryImplementor setParameterList(String name, P[] values, Type

type); @Override SqmQueryImplementor setParameterList(int position, @SuppressWarnings("rawtypes") Collection values); @@ -209,7 +209,7 @@ default SqmQueryImplementor setResultTransformer(ResultTransformer tra

SqmQueryImplementor setParameterList(int position, Collection values, Class

javaType); @Override -

SqmQueryImplementor setParameterList(int position, Collection values, BindableType

type); +

SqmQueryImplementor setParameterList(int position, Collection values, Type

type); @Override SqmQueryImplementor setParameterList(int position, Object[] values); @@ -218,7 +218,7 @@ default SqmQueryImplementor setResultTransformer(ResultTransformer tra

SqmQueryImplementor setParameterList(int position, P[] values, Class

javaType); @Override -

SqmQueryImplementor setParameterList(int position, P[] values, BindableType

type); +

SqmQueryImplementor setParameterList(int position, P[] values, Type

type); @Override

SqmQueryImplementor setParameterList(QueryParameter

parameter, Collection values); @@ -227,7 +227,7 @@ default SqmQueryImplementor setResultTransformer(ResultTransformer tra

SqmQueryImplementor setParameterList(QueryParameter

parameter, Collection values, Class

javaType); @Override -

SqmQueryImplementor setParameterList(QueryParameter

parameter, Collection values, BindableType

type); +

SqmQueryImplementor setParameterList(QueryParameter

parameter, Collection values, Type

type); @Override

SqmQueryImplementor setParameterList(QueryParameter

parameter, P[] values); @@ -236,7 +236,7 @@ default SqmQueryImplementor setResultTransformer(ResultTransformer tra

SqmQueryImplementor setParameterList(QueryParameter

parameter, P[] values, Class

javaType); @Override -

SqmQueryImplementor setParameterList(QueryParameter

parameter, P[] values, BindableType

type); +

SqmQueryImplementor setParameterList(QueryParameter

parameter, P[] values, Type

type); @Override SqmQueryImplementor setProperties(Object bean); diff --git a/hibernate-core/src/main/java/org/hibernate/query/internal/ParameterMetadataImpl.java b/hibernate-core/src/main/java/org/hibernate/query/internal/ParameterMetadataImpl.java index 765e076206cd..ac97a32bd78a 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/internal/ParameterMetadataImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/query/internal/ParameterMetadataImpl.java @@ -19,7 +19,7 @@ import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.internal.util.StringHelper; import org.hibernate.internal.util.compare.ComparableComparator; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.query.ParameterLabelException; import org.hibernate.query.QueryParameter; import org.hibernate.query.UnknownParameterException; diff --git a/hibernate-core/src/main/java/org/hibernate/query/internal/QueryEngineImpl.java b/hibernate-core/src/main/java/org/hibernate/query/internal/QueryEngineImpl.java index 394fd8157453..e6e7cc6d7828 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/internal/QueryEngineImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/query/internal/QueryEngineImpl.java @@ -16,7 +16,7 @@ import org.hibernate.internal.util.config.ConfigurationHelper; import org.hibernate.metamodel.MappingMetamodel; import org.hibernate.metamodel.model.domain.JpaMetamodel; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.hql.HqlTranslator; import org.hibernate.query.hql.internal.StandardHqlTranslator; import org.hibernate.query.hql.spi.SqmCreationOptions; diff --git a/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterBindingImpl.java b/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterBindingImpl.java index a99c000e2ba0..3996353fe5e9 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterBindingImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterBindingImpl.java @@ -13,7 +13,7 @@ import org.hibernate.metamodel.mapping.JdbcMapping; import org.hibernate.metamodel.mapping.MappingModelExpressible; import org.hibernate.metamodel.mapping.ModelPart; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.query.QueryParameter; import org.hibernate.query.spi.QueryParameterBinding; import org.hibernate.query.spi.QueryParameterBindingTypeResolver; @@ -23,6 +23,7 @@ import org.hibernate.query.sqm.tree.expression.NullSqmExpressible; import org.hibernate.type.descriptor.java.JavaType; import org.hibernate.type.descriptor.java.JavaTypeHelper; +import org.hibernate.type.internal.BindingTypeHelper; import org.hibernate.type.spi.TypeConfiguration; import jakarta.persistence.TemporalType; diff --git a/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterBindingsImpl.java b/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterBindingsImpl.java index 5711a954da17..60e6f3787ac6 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterBindingsImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterBindingsImpl.java @@ -26,7 +26,7 @@ import org.hibernate.internal.FilterImpl; import org.hibernate.metamodel.mapping.JdbcMapping; import org.hibernate.metamodel.mapping.MappingModelExpressible; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.query.QueryParameter; import org.hibernate.query.spi.ParameterMetadataImplementor; import org.hibernate.query.spi.QueryParameterBinding; diff --git a/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterNamedImpl.java b/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterNamedImpl.java index 0591744f672b..804c3d808167 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterNamedImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterNamedImpl.java @@ -6,7 +6,7 @@ import java.util.Objects; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.query.spi.AbstractQueryParameter; import org.hibernate.query.named.NamedQueryMemento; import org.hibernate.query.sqm.tree.expression.SqmParameter; diff --git a/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterPositionalImpl.java b/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterPositionalImpl.java index 37ca8e27a5a4..e89e6781db79 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterPositionalImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterPositionalImpl.java @@ -6,7 +6,7 @@ import java.util.Objects; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.query.spi.AbstractQueryParameter; import org.hibernate.query.named.NamedQueryMemento; import org.hibernate.query.sqm.tree.expression.SqmParameter; diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractCommonQueryContract.java b/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractCommonQueryContract.java index 0140b596e032..592cf5254da7 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractCommonQueryContract.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractCommonQueryContract.java @@ -34,7 +34,6 @@ import org.hibernate.property.access.spi.BuiltInPropertyAccessStrategies; import org.hibernate.property.access.spi.Getter; import org.hibernate.property.access.spi.PropertyAccess; -import org.hibernate.query.BindableType; import org.hibernate.query.CommonQueryContract; import org.hibernate.query.QueryLogging; import org.hibernate.query.QueryParameter; @@ -48,7 +47,9 @@ import org.hibernate.query.sqm.tree.expression.SqmParameter; import org.hibernate.query.sqm.tree.select.SqmSelectStatement; import org.hibernate.type.BasicType; +import org.hibernate.type.BindableType; import org.hibernate.type.descriptor.java.JavaType; +import org.hibernate.type.spi.TypeConfiguration; import jakarta.persistence.CacheRetrieveMode; import jakarta.persistence.CacheStoreMode; @@ -56,7 +57,7 @@ import jakarta.persistence.LockModeType; import jakarta.persistence.Parameter; import jakarta.persistence.TemporalType; -import org.hibernate.type.spi.TypeConfiguration; +import jakarta.persistence.metamodel.Type; import static java.lang.Boolean.TRUE; import static java.util.Arrays.asList; @@ -762,7 +763,7 @@ public CommonQueryContract setParameter(String name, Object value) { private boolean multipleBinding(QueryParameter param, Object value){ if ( param.allowsMultiValuedBinding() ) { - final BindableType hibernateType = param.getHibernateType(); + final Type hibernateType = param.getHibernateType(); if ( hibernateType == null || hibernateType instanceof NullSqmExpressible || isInstance( hibernateType, value ) ) { @@ -780,7 +781,7 @@ private void setTypedParameter(int position, TypedParameterValue typedVal setParameter( position, typedValue.value(), typedValue.type() ); } - private boolean isInstance(BindableType parameterType, Object value) { + private boolean isInstance(Type parameterType, Object value) { final SqmExpressible sqmExpressible = getNodeuilder().resolveExpressible( parameterType ); assert sqmExpressible != null; return sqmExpressible.getExpressibleJavaType().isInstance( value ); @@ -803,8 +804,8 @@ public

CommonQueryContract setParameter(String name, P value, Class

javaT } @Override - public

CommonQueryContract setParameter(String name, P value, BindableType

type) { - this.

locateBinding( name ).setBindValue( value, type ); + public

CommonQueryContract setParameter(String name, P value, Type

type) { + this.

locateBinding( name ).setBindValue( value, (BindableType

) type ); return this; } @@ -850,8 +851,8 @@ public

CommonQueryContract setParameter(int position, P value, Class

java } @Override - public

CommonQueryContract setParameter(int position, P value, BindableType

type) { - this.

locateBinding( position ).setBindValue( value, type ); + public

CommonQueryContract setParameter(int position, P value, Type

type) { + this.

locateBinding( position ).setBindValue( value, (BindableType

) type ); return this; } @@ -880,8 +881,8 @@ public

CommonQueryContract setParameter(QueryParameter

parameter, P value } @Override - public

CommonQueryContract setParameter(QueryParameter

parameter, P value, BindableType

type) { - locateBinding( parameter ).setBindValue( value, type ); + public

CommonQueryContract setParameter(QueryParameter

parameter, P value, Type

type) { + locateBinding( parameter ).setBindValue( value, (BindableType

) type ); return this; } @@ -908,19 +909,19 @@ public

CommonQueryContract setParameter(Parameter

parameter, P value) { return this; } - private

void setParameter(Parameter

parameter, P value, BindableType

type) { + private

void setParameter(Parameter

parameter, P value, Type

type) { if ( parameter instanceof QueryParameter

queryParameter ) { setParameter( queryParameter, value, type ); } else if ( value == null ) { - locateBinding( parameter ).setBindValue( null, type ); + locateBinding( parameter ).setBindValue( null, (BindableType

) type ); } else if ( value instanceof Collection ) { //TODO: this looks wrong to me: how can value be both a P and a (Collection

)? locateBinding( parameter ).setBindValues( (Collection

) value ); } else { - locateBinding( parameter ).setBindValue( value, type ); + locateBinding( parameter ).setBindValue( value, (BindableType

) type ); } } @@ -980,8 +981,8 @@ public

CommonQueryContract setParameterList(String name, Collection CommonQueryContract setParameterList(String name, Collection values, BindableType

type) { - this.

locateBinding( name ).setBindValues( values, type ); + public

CommonQueryContract setParameterList(String name, Collection values, Type

type) { + this.

locateBinding( name ).setBindValues( values, (BindableType

) type ); return this; } @@ -1003,8 +1004,8 @@ public

CommonQueryContract setParameterList(String name, P[] values, Class

CommonQueryContract setParameterList(String name, P[] values, BindableType

type) { - this.

locateBinding( name ).setBindValues( asList( values ), type ); + public

CommonQueryContract setParameterList(String name, P[] values, Type

type) { + this.

locateBinding( name ).setBindValues( asList( values ), (BindableType

) type ); return this; } @@ -1026,7 +1027,7 @@ public

CommonQueryContract setParameterList(int position, Collection BindableType

getParamType(Class

javaType) { + private

Type

getParamType(Class

javaType) { final TypeConfiguration typeConfiguration = getSession().getFactory().getTypeConfiguration(); final BasicType

basicType = typeConfiguration.standardBasicTypeForJavaType( javaType ); if ( basicType != null ) { @@ -1039,14 +1040,14 @@ private

BindableType

getParamType(Class

javaType) { return managedDomainType; } else { - throw new HibernateException( "Unable to determine BindableType: " + javaType.getName() ); + throw new HibernateException( "Unable to determine Type: " + javaType.getName() ); } } } @Override - public

CommonQueryContract setParameterList(int position, Collection values, BindableType

type) { - this.

locateBinding( position ).setBindValues( values, type ); + public

CommonQueryContract setParameterList(int position, Collection values, Type

type) { + this.

locateBinding( position ).setBindValues( values, (BindableType

) type ); return this; } @@ -1070,7 +1071,7 @@ public

CommonQueryContract setParameterList(int position, P[] values, Class< } @SuppressWarnings({ "unchecked", "rawtypes" }) - public

CommonQueryContract setParameterList(int position, P[] values, BindableType

type) { + public

CommonQueryContract setParameterList(int position, P[] values, Type

type) { locateBinding( position ).setBindValues( asList( values ), (BindableType) type ); return this; } @@ -1096,8 +1097,8 @@ public

CommonQueryContract setParameterList(QueryParameter

parameter, Col } @Override - public

CommonQueryContract setParameterList(QueryParameter

parameter, Collection values, BindableType

type) { - locateBinding( parameter ).setBindValues( values, type ); + public

CommonQueryContract setParameterList(QueryParameter

parameter, Collection values, Type

type) { + locateBinding( parameter ).setBindValues( values, (BindableType

) type ); return this; } @@ -1121,8 +1122,8 @@ public

CommonQueryContract setParameterList(QueryParameter

parameter, P[] } @Override - public

CommonQueryContract setParameterList(QueryParameter

parameter, P[] values, BindableType

type) { - locateBinding( parameter ).setBindValues( asList( values ), type ); + public

CommonQueryContract setParameterList(QueryParameter

parameter, P[] values, Type

type) { + locateBinding( parameter ).setBindValues( asList( values ), (BindableType

) type ); return this; } @@ -1150,7 +1151,7 @@ else if ( object instanceof Object[] array ) { return this; } - protected BindableType determineType(String namedParam, Class retType) { + protected Type determineType(String namedParam, Class retType) { BindableType type = locateBinding( namedParam ).getBindType(); if ( type == null ) { type = getParameterMetadata().getQueryParameter( namedParam ).getHibernateType(); @@ -1162,7 +1163,7 @@ protected BindableType determineType(String namedParam, Class) type; + return (Type) type; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractQuery.java b/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractQuery.java index 5f31ce187120..33c152366f65 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractQuery.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractQuery.java @@ -20,6 +20,7 @@ import jakarta.persistence.Parameter; import jakarta.persistence.PessimisticLockScope; import jakarta.persistence.TemporalType; +import jakarta.persistence.metamodel.Type; import jakarta.persistence.Timeout; import org.hibernate.CacheMode; @@ -32,7 +33,6 @@ import org.hibernate.graph.GraphSemantic; import org.hibernate.jpa.AvailableHints; import org.hibernate.jpa.internal.util.LockModeTypeHelper; -import org.hibernate.query.BindableType; import org.hibernate.query.IllegalQueryOperationException; import org.hibernate.query.KeyedPage; import org.hibernate.query.KeyedResultList; @@ -405,7 +405,7 @@ public

QueryImplementor setParameter(String name, P value, Class

javaT } @Override - public

QueryImplementor setParameter(String name, P value, BindableType

type) { + public

QueryImplementor setParameter(String name, P value, Type

type) { super.setParameter( name, value, type ); return this; } @@ -429,7 +429,7 @@ public

QueryImplementor setParameter(int position, P value, Class

java } @Override - public

QueryImplementor setParameter(int position, P value, BindableType

type) { + public

QueryImplementor setParameter(int position, P value, Type

type) { super.setParameter( position, value, type ); return this; } @@ -453,7 +453,7 @@ public

QueryImplementor setParameter(QueryParameter

parameter, P value } @Override - public

QueryImplementor setParameter(QueryParameter

parameter, P value, BindableType

type) { + public

QueryImplementor setParameter(QueryParameter

parameter, P value, Type

type) { super.setParameter( parameter, value, type ); return this; } @@ -481,7 +481,7 @@ public

QueryImplementor setParameterList(String name, Collection QueryImplementor setParameterList(String name, Collection values, BindableType

type) { + public

QueryImplementor setParameterList(String name, Collection values, Type

type) { super.setParameterList( name, values, type ); return this; } @@ -498,7 +498,7 @@ public

QueryImplementor setParameterList(String name, P[] values, Class

QueryImplementor setParameterList(String name, P[] values, BindableType

type) { + public

QueryImplementor setParameterList(String name, P[] values, Type

type) { super.setParameterList( name, values, type ); return this; } @@ -516,7 +516,7 @@ public

QueryImplementor setParameterList(int position, Collection QueryImplementor setParameterList(int position, Collection values, BindableType

type) { + public

QueryImplementor setParameterList(int position, Collection values, Type

type) { super.setParameterList( position, values, type ); return this; } @@ -533,7 +533,7 @@ public

QueryImplementor setParameterList(int position, P[] values, Class< return this; } - public

QueryImplementor setParameterList(int position, P[] values, BindableType

type) { + public

QueryImplementor setParameterList(int position, P[] values, Type

type) { super.setParameterList( position, values, type ); return this; } @@ -551,7 +551,7 @@ public

QueryImplementor setParameterList(QueryParameter

parameter, Col } @Override - public

QueryImplementor setParameterList(QueryParameter

parameter, Collection values, BindableType

type) { + public

QueryImplementor setParameterList(QueryParameter

parameter, Collection values, Type

type) { super.setParameterList( parameter, values, type ); return this; } @@ -570,7 +570,7 @@ public

QueryImplementor setParameterList(QueryParameter

parameter, P[] @Override - public

QueryImplementor setParameterList(QueryParameter

parameter, P[] values, BindableType

type) { + public

QueryImplementor setParameterList(QueryParameter

parameter, P[] values, Type

type) { super.setParameterList( parameter, values, type ); return this; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractQueryParameter.java b/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractQueryParameter.java index c1969ef8fdbf..b44310a713a2 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractQueryParameter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractQueryParameter.java @@ -4,7 +4,8 @@ */ package org.hibernate.query.spi; -import org.hibernate.query.BindableType; + +import org.hibernate.type.BindableType; import static org.hibernate.query.QueryLogging.QUERY_MESSAGE_LOGGER; diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractSelectionQuery.java b/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractSelectionQuery.java index f7f60e8ce133..e4bf1ab1f886 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractSelectionQuery.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractSelectionQuery.java @@ -36,7 +36,6 @@ import org.hibernate.graph.spi.RootGraphImplementor; import org.hibernate.jpa.internal.util.FlushModeTypeHelper; import org.hibernate.jpa.internal.util.LockModeTypeHelper; -import org.hibernate.query.BindableType; import org.hibernate.query.IllegalQueryOperationException; import org.hibernate.query.QueryParameter; import org.hibernate.query.SelectionQuery; @@ -53,6 +52,7 @@ import jakarta.persistence.NoResultException; import jakarta.persistence.Parameter; import jakarta.persistence.TemporalType; +import jakarta.persistence.metamodel.Type; import static java.util.Spliterators.spliteratorUnknownSize; import static org.hibernate.CacheMode.fromJpaModes; @@ -623,7 +623,7 @@ public

SelectionQuery setParameter(String name, P value, Class

javaTyp } @Override - public

SelectionQuery setParameter(String name, P value, BindableType

type) { + public

SelectionQuery setParameter(String name, P value, Type

type) { super.setParameter( name, value, type ); return this; } @@ -647,7 +647,7 @@ public

SelectionQuery setParameter(int position, P value, Class

javaTy } @Override - public

SelectionQuery setParameter(int position, P value, BindableType

type) { + public

SelectionQuery setParameter(int position, P value, Type

type) { super.setParameter( position, value, type ); return this; } @@ -671,7 +671,7 @@ public

SelectionQuery setParameter(QueryParameter

parameter, P value, } @Override - public

SelectionQuery setParameter(QueryParameter

parameter, P value, BindableType

type) { + public

SelectionQuery setParameter(QueryParameter

parameter, P value, Type

type) { super.setParameter( parameter, value, type ); return this; } @@ -731,7 +731,7 @@ public

SelectionQuery setParameterList(String name, Collection SelectionQuery setParameterList(String name, Collection values, BindableType

type) { + public

SelectionQuery setParameterList(String name, Collection values, Type

type) { super.setParameterList( name, values, type ); return this; } @@ -749,7 +749,7 @@ public

SelectionQuery setParameterList(String name, P[] values, Class

} @Override - public

SelectionQuery setParameterList(String name, P[] values, BindableType

type) { + public

SelectionQuery setParameterList(String name, P[] values, Type

type) { super.setParameterList( name, values, type ); return this; } @@ -767,7 +767,7 @@ public

SelectionQuery setParameterList(int position, Collection SelectionQuery setParameterList(int position, Collection values, BindableType

type) { + public

SelectionQuery setParameterList(int position, Collection values, Type

type) { super.setParameterList( position, values, type ); return this; } @@ -785,7 +785,7 @@ public

SelectionQuery setParameterList(int position, P[] values, Class

} @Override - public

SelectionQuery setParameterList(int position, P[] values, BindableType

type) { + public

SelectionQuery setParameterList(int position, P[] values, Type

type) { super.setParameterList( position, values, type ); return this; } @@ -803,7 +803,7 @@ public

SelectionQuery setParameterList(QueryParameter

parameter, Colle } @Override - public

SelectionQuery setParameterList(QueryParameter

parameter, Collection values, BindableType

type) { + public

SelectionQuery setParameterList(QueryParameter

parameter, Collection values, Type

type) { super.setParameterList( parameter, values, type ); return this; } @@ -821,7 +821,7 @@ public

SelectionQuery setParameterList(QueryParameter

parameter, P[] v } @Override - public

SelectionQuery setParameterList(QueryParameter

parameter, P[] values, BindableType

type) { + public

SelectionQuery setParameterList(QueryParameter

parameter, P[] values, Type

type) { super.setParameterList( parameter, values, type ); return this; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/BindableTypeImplementor.java b/hibernate-core/src/main/java/org/hibernate/query/spi/BindableTypeImplementor.java deleted file mode 100644 index 4e2e9bed0d45..000000000000 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/BindableTypeImplementor.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * Copyright Red Hat Inc. and Hibernate Authors - */ -package org.hibernate.query.spi; - -import org.hibernate.Incubating; -import org.hibernate.query.BindableType; -import org.hibernate.query.sqm.SqmBindable; -import org.hibernate.query.sqm.SqmExpressible; - -/** - * SPI-level interface which must be implemented by every implementation of - * {@link BindableType}. - * - * @param the type of the parameter - * - * @apiNote This was introduced to eliminate the leakage of {@link SqmExpressible} - * and {@link org.hibernate.type.spi.TypeConfiguration} into the API - * package {@link org.hibernate.query}. - * - * @since 7.0 - * - * @author Gavin King - */ -@Incubating -public interface BindableTypeImplementor extends BindableType { - /** - * Resolve this parameter type to the corresponding {@link SqmExpressible}. - */ - SqmBindable resolveExpressible(BindingContext bindingContext); -} diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryEngine.java b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryEngine.java index 0c162389d13c..f752c53c4f4f 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryEngine.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryEngine.java @@ -14,6 +14,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.function.SqmFunctionRegistry; import org.hibernate.query.sqm.sql.SqmTranslatorFactory; +import org.hibernate.type.BindingContext; /** * Aggregation and encapsulation of the components Hibernate uses diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryImplementor.java b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryImplementor.java index b0e22cb574a5..278e7cbac844 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryImplementor.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryImplementor.java @@ -13,16 +13,16 @@ import org.hibernate.Incubating; import org.hibernate.ScrollMode; import org.hibernate.engine.spi.SharedSessionContractImplementor; -import org.hibernate.query.BindableType; import org.hibernate.query.Query; import org.hibernate.query.QueryParameter; - -import jakarta.persistence.Parameter; -import jakarta.persistence.TemporalType; import org.hibernate.query.ResultListTransformer; import org.hibernate.query.TupleTransformer; import org.hibernate.transform.ResultTransformer; +import jakarta.persistence.Parameter; +import jakarta.persistence.TemporalType; +import jakarta.persistence.metamodel.Type; + /** * @author Steve Ebersole */ @@ -60,7 +60,7 @@ default QueryImplementor setResultTransformer(ResultTransformer transf

QueryImplementor setParameter(String name, P value, Class

type); @Override -

QueryImplementor setParameter(String name, P value, BindableType

type); +

QueryImplementor setParameter(String name, P value, Type

type); @Override QueryImplementor setParameter(String name, Instant value, TemporalType temporalType); @@ -78,7 +78,7 @@ default QueryImplementor setResultTransformer(ResultTransformer transf

QueryImplementor setParameter(int position, P value, Class

type); @Override -

QueryImplementor setParameter(int position, P value, BindableType

type); +

QueryImplementor setParameter(int position, P value, Type

type); @Override QueryImplementor setParameter(int position, Instant value, TemporalType temporalType); @@ -96,7 +96,7 @@ default QueryImplementor setResultTransformer(ResultTransformer transf

QueryImplementor setParameter(QueryParameter

parameter, P value, Class

type); @Override -

QueryImplementor setParameter(QueryParameter

parameter, P val, BindableType

type); +

QueryImplementor setParameter(QueryParameter

parameter, P val, Type

type); @Override QueryImplementor setParameter(Parameter param, T value); @@ -114,7 +114,7 @@ default QueryImplementor setResultTransformer(ResultTransformer transf

QueryImplementor setParameterList(String name, Collection values, Class

javaType); @Override -

QueryImplementor setParameterList(String name, Collection values, BindableType

type); +

QueryImplementor setParameterList(String name, Collection values, Type

type); @Override QueryImplementor setParameterList(String name, Object[] values); @@ -123,7 +123,7 @@ default QueryImplementor setResultTransformer(ResultTransformer transf

QueryImplementor setParameterList(String name, P[] values, Class

javaType); @Override -

QueryImplementor setParameterList(String name, P[] values, BindableType

type); +

QueryImplementor setParameterList(String name, P[] values, Type

type); @Override QueryImplementor setParameterList(int position, @SuppressWarnings("rawtypes") Collection values); @@ -132,7 +132,7 @@ default QueryImplementor setResultTransformer(ResultTransformer transf

QueryImplementor setParameterList(int position, Collection values, Class

javaType); @Override -

QueryImplementor setParameterList(int position, Collection values, BindableType

type); +

QueryImplementor setParameterList(int position, Collection values, Type

type); @Override QueryImplementor setParameterList(int position, Object[] values); @@ -141,7 +141,7 @@ default QueryImplementor setResultTransformer(ResultTransformer transf

QueryImplementor setParameterList(int position, P[] values, Class

javaType); @Override -

QueryImplementor setParameterList(int position, P[] values, BindableType

type); +

QueryImplementor setParameterList(int position, P[] values, Type

type); @Override

QueryImplementor setParameterList(QueryParameter

parameter, Collection values); @@ -150,7 +150,7 @@ default QueryImplementor setResultTransformer(ResultTransformer transf

QueryImplementor setParameterList(QueryParameter

parameter, Collection values, Class

javaType); @Override -

QueryImplementor setParameterList(QueryParameter

parameter, Collection values, BindableType

type); +

QueryImplementor setParameterList(QueryParameter

parameter, Collection values, Type

type); @Override

QueryImplementor setParameterList(QueryParameter

parameter, P[] values); @@ -159,7 +159,7 @@ default QueryImplementor setResultTransformer(ResultTransformer transf

QueryImplementor setParameterList(QueryParameter

parameter, P[] values, Class

javaType); @Override -

QueryImplementor setParameterList(QueryParameter

parameter, P[] values, BindableType

type); +

QueryImplementor setParameterList(QueryParameter

parameter, P[] values, Type

type); @Override QueryImplementor setProperties(Object bean); diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBinding.java b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBinding.java index a0c2ae23dfee..f552a4b4e768 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBinding.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBinding.java @@ -9,8 +9,8 @@ import org.hibernate.Incubating; import org.hibernate.metamodel.mapping.MappingModelExpressible; -import org.hibernate.query.BindableType; import org.hibernate.query.QueryParameter; +import org.hibernate.type.BindableType; import org.hibernate.type.spi.TypeConfiguration; /** diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBindingTypeResolver.java b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBindingTypeResolver.java index 11d8625e2031..6b89e805660a 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBindingTypeResolver.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBindingTypeResolver.java @@ -6,7 +6,7 @@ import org.hibernate.Incubating; import org.hibernate.metamodel.MappingMetamodel; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.type.spi.TypeConfiguration; /** diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBindingValidator.java b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBindingValidator.java index db7e06713137..4a7903283ecc 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBindingValidator.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBindingValidator.java @@ -8,9 +8,10 @@ import java.util.Collection; import java.util.Date; -import org.hibernate.query.BindableType; import org.hibernate.query.QueryArgumentException; import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.type.BindableType; +import org.hibernate.type.BindingContext; import org.hibernate.type.descriptor.java.JavaType; import jakarta.persistence.TemporalType; diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterImplementor.java b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterImplementor.java index 813a87aed0cb..ab43dec41e96 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterImplementor.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterImplementor.java @@ -4,9 +4,9 @@ */ package org.hibernate.query.spi; -import org.hibernate.query.BindableType; import org.hibernate.query.QueryParameter; import org.hibernate.query.named.NamedQueryMemento; +import org.hibernate.type.BindableType; /** * @author Steve Ebersole diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterListBinding.java b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterListBinding.java index 9530ede728eb..f1594391038b 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterListBinding.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterListBinding.java @@ -8,7 +8,7 @@ import jakarta.persistence.TemporalType; import org.hibernate.Incubating; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.type.Type; /** diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/SqmQuery.java b/hibernate-core/src/main/java/org/hibernate/query/spi/SqmQuery.java index 373eca0c62b8..d04b13a37cb9 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/SqmQuery.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/SqmQuery.java @@ -12,7 +12,6 @@ import org.hibernate.FlushMode; import org.hibernate.query.QueryFlushMode; -import org.hibernate.query.BindableType; import org.hibernate.query.CommonQueryContract; import org.hibernate.query.ParameterMetadata; import org.hibernate.query.QueryParameter; @@ -20,6 +19,7 @@ import jakarta.persistence.Parameter; import jakarta.persistence.TemporalType; +import jakarta.persistence.metamodel.Type; /** * Query based on an SQM tree. @@ -43,7 +43,7 @@ public interface SqmQuery extends CommonQueryContract {

SqmQuery setParameter(String name, P value, Class

type); @Override -

SqmQuery setParameter(String name, P value, BindableType

type); +

SqmQuery setParameter(String name, P value, Type

type); @Override @Deprecated(since = "7") SqmQuery setParameter(String name, Instant value, TemporalType temporalType); @@ -61,7 +61,7 @@ public interface SqmQuery extends CommonQueryContract {

SqmQuery setParameter(int position, P value, Class

type); @Override -

SqmQuery setParameter(int position, P value, BindableType

type); +

SqmQuery setParameter(int position, P value, Type

type); @Override @Deprecated(since = "7") SqmQuery setParameter(int position, Instant value, TemporalType temporalType); @@ -79,7 +79,7 @@ public interface SqmQuery extends CommonQueryContract {

SqmQuery setParameter(QueryParameter

parameter, P value, Class

type); @Override -

SqmQuery setParameter(QueryParameter

parameter, P val, BindableType

type); +

SqmQuery setParameter(QueryParameter

parameter, P val, Type

type); @Override SqmQuery setParameter(Parameter param, T value); @@ -97,7 +97,7 @@ public interface SqmQuery extends CommonQueryContract {

SqmQuery setParameterList(String name, Collection values, Class

javaType); @Override -

SqmQuery setParameterList(String name, Collection values, BindableType

type); +

SqmQuery setParameterList(String name, Collection values, Type

type); @Override SqmQuery setParameterList(String name, Object[] values); @@ -106,7 +106,7 @@ public interface SqmQuery extends CommonQueryContract {

SqmQuery setParameterList(String name, P[] values, Class

javaType); @Override -

SqmQuery setParameterList(String name, P[] values, BindableType

type); +

SqmQuery setParameterList(String name, P[] values, Type

type); @Override SqmQuery setParameterList(int position, @SuppressWarnings("rawtypes") Collection values); @@ -115,7 +115,7 @@ public interface SqmQuery extends CommonQueryContract {

SqmQuery setParameterList(int position, Collection values, Class

javaType); @Override -

SqmQuery setParameterList(int position, Collection values, BindableType

type); +

SqmQuery setParameterList(int position, Collection values, Type

type); @Override SqmQuery setParameterList(int position, Object[] values); @@ -124,7 +124,7 @@ public interface SqmQuery extends CommonQueryContract {

SqmQuery setParameterList(int position, P[] values, Class

javaType); @Override -

SqmQuery setParameterList(int position, P[] values, BindableType

type); +

SqmQuery setParameterList(int position, P[] values, Type

type); @Override

SqmQuery setParameterList(QueryParameter

parameter, Collection values); @@ -133,7 +133,7 @@ public interface SqmQuery extends CommonQueryContract {

SqmQuery setParameterList(QueryParameter

parameter, Collection values, Class

javaType); @Override -

SqmQuery setParameterList(QueryParameter

parameter, Collection values, BindableType

type); +

SqmQuery setParameterList(QueryParameter

parameter, Collection values, Type

type); @Override

SqmQuery setParameterList(QueryParameter

parameter, P[] values); @@ -142,7 +142,7 @@ public interface SqmQuery extends CommonQueryContract {

SqmQuery setParameterList(QueryParameter

parameter, P[] values, Class

javaType); @Override -

SqmQuery setParameterList(QueryParameter

parameter, P[] values, BindableType

type); +

SqmQuery setParameterList(QueryParameter

parameter, P[] values, Type

type); @Override SqmQuery setProperties(Object bean); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sql/internal/NativeQueryImpl.java b/hibernate-core/src/main/java/org/hibernate/query/sql/internal/NativeQueryImpl.java index 1a2f8ddb79d1..609e200905f7 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sql/internal/NativeQueryImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sql/internal/NativeQueryImpl.java @@ -49,7 +49,6 @@ import org.hibernate.internal.util.MathHelper; import org.hibernate.jpa.spi.NativeQueryTupleTransformer; import org.hibernate.metamodel.model.domain.BasicDomainType; -import org.hibernate.query.BindableType; import org.hibernate.query.KeyedPage; import org.hibernate.query.KeyedResultList; import org.hibernate.query.NativeQuery; @@ -102,6 +101,9 @@ import org.hibernate.transform.ResultTransformer; import org.hibernate.type.BasicType; import org.hibernate.type.BasicTypeReference; +import org.hibernate.type.BasicTypeRegistry; +import org.hibernate.type.descriptor.java.JavaType; +import org.hibernate.type.descriptor.java.spi.UnknownBasicJavaType; import jakarta.persistence.AttributeConverter; import jakarta.persistence.CacheRetrieveMode; @@ -114,9 +116,7 @@ import jakarta.persistence.Tuple; import jakarta.persistence.TypedQuery; import jakarta.persistence.metamodel.SingularAttribute; -import org.hibernate.type.BasicTypeRegistry; -import org.hibernate.type.descriptor.java.JavaType; -import org.hibernate.type.descriptor.java.spi.UnknownBasicJavaType; +import jakarta.persistence.metamodel.Type; import static java.lang.Character.isWhitespace; import static java.util.Collections.addAll; @@ -1440,7 +1440,7 @@ public

NativeQueryImplementor setParameter(String name, P value, Class

} @Override - public

NativeQueryImplementor setParameter(String name, P value, BindableType

type) { + public

NativeQueryImplementor setParameter(String name, P value, Type

type) { super.setParameter( name, value, type ); return this; } @@ -1476,7 +1476,7 @@ public

NativeQueryImplementor setParameter(int position, P value, Class

NativeQueryImplementor setParameter(int position, P value, BindableType

type) { + public

NativeQueryImplementor setParameter(int position, P value, Type

type) { super.setParameter( position, value, type ); return this; } @@ -1512,7 +1512,7 @@ public

NativeQueryImplementor setParameter(QueryParameter

parameter, P } @Override - public

NativeQueryImplementor setParameter(QueryParameter

parameter, P value, BindableType

type) { + public

NativeQueryImplementor setParameter(QueryParameter

parameter, P value, Type

type) { super.setParameter( parameter, value, type ); return this; } @@ -1548,7 +1548,7 @@ public

NativeQueryImplementor setParameterList(String name, Collection NativeQueryImplementor setParameterList(String name, Collection values, BindableType

type) { + public

NativeQueryImplementor setParameterList(String name, Collection values, Type

type) { super.setParameterList( name, values, type ); return this; } @@ -1566,7 +1566,7 @@ public

NativeQueryImplementor setParameterList(String name, P[] values, C } @Override - public

NativeQueryImplementor setParameterList(String name, P[] values, BindableType

type) { + public

NativeQueryImplementor setParameterList(String name, P[] values, Type

type) { super.setParameterList( name, values, type ); return this; } @@ -1584,7 +1584,7 @@ public

NativeQueryImplementor setParameterList(int position, Collection NativeQueryImplementor setParameterList(int position, Collection values, BindableType

type) { + public

NativeQueryImplementor setParameterList(int position, Collection values, Type

type) { super.setParameterList( position, values, type ); return this; } @@ -1602,7 +1602,7 @@ public

NativeQueryImplementor setParameterList(int position, P[] values, } @Override - public

NativeQueryImplementor setParameterList(int position, P[] values, BindableType

type) { + public

NativeQueryImplementor setParameterList(int position, P[] values, Type

type) { super.setParameterList( position, values, type ); return this; } @@ -1622,7 +1622,7 @@ public

NativeQueryImplementor setParameterList(QueryParameter

paramete } @Override - public

NativeQueryImplementor setParameterList(QueryParameter

parameter, Collection values, BindableType

type) { + public

NativeQueryImplementor setParameterList(QueryParameter

parameter, Collection values, Type

type) { super.setParameterList( parameter, values, type ); return this; } @@ -1640,7 +1640,7 @@ public

NativeQueryImplementor setParameterList(QueryParameter

paramete } @Override - public

NativeQueryImplementor setParameterList(QueryParameter

parameter, P[] values, BindableType

type) { + public

NativeQueryImplementor setParameterList(QueryParameter

parameter, P[] values, Type

type) { super.setParameterList( parameter, values, type ); return this; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sql/spi/NativeQueryImplementor.java b/hibernate-core/src/main/java/org/hibernate/query/sql/spi/NativeQueryImplementor.java index 0eb64239abf1..dbd2b61542e6 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sql/spi/NativeQueryImplementor.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sql/spi/NativeQueryImplementor.java @@ -18,7 +18,6 @@ import org.hibernate.LockOptions; import org.hibernate.MappingException; import org.hibernate.metamodel.model.domain.BasicDomainType; -import org.hibernate.query.BindableType; import org.hibernate.query.NativeQuery; import org.hibernate.query.QueryParameter; import org.hibernate.query.ResultListTransformer; @@ -33,6 +32,7 @@ import jakarta.persistence.LockModeType; import jakarta.persistence.Parameter; import jakarta.persistence.TemporalType; +import jakarta.persistence.metamodel.Type; import jakarta.persistence.metamodel.SingularAttribute; /** @@ -208,7 +208,7 @@ NativeQueryImplementor addJoin( NativeQueryImplementor setParameter(String name, Object val); @Override -

NativeQueryImplementor setParameter(String name, P val, BindableType

type); +

NativeQueryImplementor setParameter(String name, P val, Type

type); @Override

NativeQueryImplementor setParameter(String name, P val, Class

type); @@ -229,7 +229,7 @@ NativeQueryImplementor addJoin(

NativeQueryImplementor setParameter(int position, P val, Class

type); @Override -

NativeQueryImplementor setParameter(int position, P val, BindableType

type); +

NativeQueryImplementor setParameter(int position, P val, Type

type); @Override @Deprecated NativeQueryImplementor setParameter(int position, Instant value, TemporalType temporalType); @@ -247,7 +247,7 @@ NativeQueryImplementor addJoin(

NativeQueryImplementor setParameter(QueryParameter

parameter, P val, Class

type); @Override -

NativeQueryImplementor setParameter(QueryParameter

parameter, P val, BindableType

type); +

NativeQueryImplementor setParameter(QueryParameter

parameter, P val, Type

type); @Override

NativeQueryImplementor setParameter(Parameter

param, P value); @@ -265,7 +265,7 @@ NativeQueryImplementor addJoin(

NativeQueryImplementor setParameterList(String name, Collection values, Class

type); @Override -

NativeQueryImplementor setParameterList(String name, Collection values, BindableType

type); +

NativeQueryImplementor setParameterList(String name, Collection values, Type

type); @Override NativeQueryImplementor setParameterList(String name, Object[] values); @@ -274,7 +274,7 @@ NativeQueryImplementor addJoin(

NativeQueryImplementor setParameterList(String name, P[] values, Class

type); @Override -

NativeQueryImplementor setParameterList(String name, P[] values, BindableType

type); +

NativeQueryImplementor setParameterList(String name, P[] values, Type

type); @Override NativeQueryImplementor setParameterList(int position, @SuppressWarnings("rawtypes") Collection values); @@ -283,7 +283,7 @@ NativeQueryImplementor addJoin(

NativeQueryImplementor setParameterList(int position, Collection values, Class

type); @Override -

NativeQueryImplementor setParameterList(int position, Collection values, BindableType

type); +

NativeQueryImplementor setParameterList(int position, Collection values, Type

type); @Override NativeQueryImplementor setParameterList(int position, Object[] values); @@ -292,7 +292,7 @@ NativeQueryImplementor addJoin(

NativeQueryImplementor setParameterList(int position, P[] values, Class

javaType); @Override -

NativeQueryImplementor setParameterList(int position, P[] values, BindableType

type); +

NativeQueryImplementor setParameterList(int position, P[] values, Type

type); @Override @@ -302,7 +302,7 @@ NativeQueryImplementor addJoin(

NativeQueryImplementor setParameterList(QueryParameter

parameter, Collection values, Class

javaType); @Override -

NativeQueryImplementor setParameterList(QueryParameter

parameter, Collection values, BindableType

type); +

NativeQueryImplementor setParameterList(QueryParameter

parameter, Collection values, Type

type); @Override

NativeQueryImplementor setParameterList(QueryParameter

parameter, P[] values); @@ -311,7 +311,7 @@ NativeQueryImplementor addJoin(

NativeQueryImplementor setParameterList(QueryParameter

parameter, P[] values, Class

javaType); @Override -

NativeQueryImplementor setParameterList(QueryParameter

parameter, P[] values, BindableType

type); +

NativeQueryImplementor setParameterList(QueryParameter

parameter, P[] values, Type

type); @Override NativeQueryImplementor setProperties(Object bean); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmBindable.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmBindable.java index 64bae0b373a2..25b049066a0a 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmBindable.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmBindable.java @@ -4,8 +4,8 @@ */ package org.hibernate.query.sqm; -import org.hibernate.query.spi.BindableTypeImplementor; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindableType; +import org.hibernate.type.BindingContext; /** * An SQM node which may be used to disambiguate the type of an argument to a query parameter. @@ -14,7 +14,7 @@ * * @since 7.0 */ -public interface SqmBindable extends SqmExpressible, BindableTypeImplementor { +public interface SqmBindable extends SqmExpressible, BindableType { @Override default SqmBindable resolveExpressible(BindingContext bindingContext) { return this; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmSelectionQuery.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmSelectionQuery.java index f7c08f8d0b59..a9c11a42941b 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmSelectionQuery.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmSelectionQuery.java @@ -13,7 +13,6 @@ import org.hibernate.CacheMode; import org.hibernate.FlushMode; import org.hibernate.query.QueryFlushMode; -import org.hibernate.query.BindableType; import org.hibernate.query.QueryParameter; import org.hibernate.query.ResultListTransformer; import org.hibernate.query.SelectionQuery; @@ -22,6 +21,7 @@ import jakarta.persistence.Parameter; import jakarta.persistence.TemporalType; +import jakarta.persistence.metamodel.Type; /** * @author Steve Ebersole @@ -35,7 +35,7 @@ public interface SqmSelectionQuery extends SqmQuery, SelectionQuery {

SqmSelectionQuery setParameter(String name, P value, Class

type); @Override -

SqmSelectionQuery setParameter(String name, P value, BindableType

type); +

SqmSelectionQuery setParameter(String name, P value, Type

type); @Override @Deprecated(since = "7") SqmSelectionQuery setParameter(String name, Instant value, TemporalType temporalType); @@ -53,7 +53,7 @@ public interface SqmSelectionQuery extends SqmQuery, SelectionQuery {

SqmSelectionQuery setParameter(int position, P value, Class

type); @Override -

SqmSelectionQuery setParameter(int position, P value, BindableType

type); +

SqmSelectionQuery setParameter(int position, P value, Type

type); @Override @Deprecated(since = "7") SqmSelectionQuery setParameter(int position, Instant value, TemporalType temporalType); @@ -71,7 +71,7 @@ public interface SqmSelectionQuery extends SqmQuery, SelectionQuery {

SqmSelectionQuery setParameter(QueryParameter

parameter, P value, Class

type); @Override -

SqmSelectionQuery setParameter(QueryParameter

parameter, P val, BindableType

type); +

SqmSelectionQuery setParameter(QueryParameter

parameter, P val, Type

type); @Override SqmSelectionQuery setParameter(Parameter param, T value); @@ -89,7 +89,7 @@ public interface SqmSelectionQuery extends SqmQuery, SelectionQuery {

SqmSelectionQuery setParameterList(String name, Collection values, Class

javaType); @Override -

SqmSelectionQuery setParameterList(String name, Collection values, BindableType

type); +

SqmSelectionQuery setParameterList(String name, Collection values, Type

type); @Override SqmSelectionQuery setParameterList(String name, Object[] values); @@ -98,7 +98,7 @@ public interface SqmSelectionQuery extends SqmQuery, SelectionQuery {

SqmSelectionQuery setParameterList(String name, P[] values, Class

javaType); @Override -

SqmSelectionQuery setParameterList(String name, P[] values, BindableType

type); +

SqmSelectionQuery setParameterList(String name, P[] values, Type

type); @Override SqmSelectionQuery setParameterList(int position, @SuppressWarnings("rawtypes") Collection values); @@ -107,7 +107,7 @@ public interface SqmSelectionQuery extends SqmQuery, SelectionQuery {

SqmSelectionQuery setParameterList(int position, Collection values, Class

javaType); @Override -

SqmSelectionQuery setParameterList(int position, Collection values, BindableType

type); +

SqmSelectionQuery setParameterList(int position, Collection values, Type

type); @Override SqmSelectionQuery setParameterList(int position, Object[] values); @@ -116,7 +116,7 @@ public interface SqmSelectionQuery extends SqmQuery, SelectionQuery {

SqmSelectionQuery setParameterList(int position, P[] values, Class

javaType); @Override -

SqmSelectionQuery setParameterList(int position, P[] values, BindableType

type); +

SqmSelectionQuery setParameterList(int position, P[] values, Type

type); @Override

SqmSelectionQuery setParameterList(QueryParameter

parameter, Collection values); @@ -125,7 +125,7 @@ public interface SqmSelectionQuery extends SqmQuery, SelectionQuery {

SqmSelectionQuery setParameterList(QueryParameter

parameter, Collection values, Class

javaType); @Override -

SqmSelectionQuery setParameterList(QueryParameter

parameter, Collection values, BindableType

type); +

SqmSelectionQuery setParameterList(QueryParameter

parameter, Collection values, Type

type); @Override

SqmSelectionQuery setParameterList(QueryParameter

parameter, P[] values); @@ -134,7 +134,7 @@ public interface SqmSelectionQuery extends SqmQuery, SelectionQuery {

SqmSelectionQuery setParameterList(QueryParameter

parameter, P[] values, Class

javaType); @Override -

SqmSelectionQuery setParameterList(QueryParameter

parameter, P[] values, BindableType

type); +

SqmSelectionQuery setParameterList(QueryParameter

parameter, P[] values, Type

type); @Override SqmSelectionQuery setProperties(Object bean); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/AbstractSqmSelectionQuery.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/AbstractSqmSelectionQuery.java index 748f570d6bd8..d66ebb47a026 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/AbstractSqmSelectionQuery.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/AbstractSqmSelectionQuery.java @@ -8,7 +8,7 @@ import org.hibernate.HibernateException; import org.hibernate.engine.spi.SharedSessionContractImplementor; import org.hibernate.graph.spi.AppliedGraph; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.query.IllegalSelectQueryException; import org.hibernate.query.KeyedPage; import org.hibernate.query.KeyedResultList; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/QuerySqmImpl.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/QuerySqmImpl.java index 8ac378f23dbe..4f0878734bc6 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/QuerySqmImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/QuerySqmImpl.java @@ -14,6 +14,8 @@ import jakarta.persistence.PessimisticLockScope; import jakarta.persistence.TemporalType; import jakarta.persistence.Timeout; +import jakarta.persistence.metamodel.Type; + import org.hibernate.CacheMode; import org.hibernate.FlushMode; import org.hibernate.HibernateException; @@ -34,7 +36,6 @@ import org.hibernate.metamodel.mapping.internal.SingleAttributeIdentifierMapping; import org.hibernate.metamodel.model.domain.EntityDomainType; import org.hibernate.persister.entity.EntityPersister; -import org.hibernate.query.BindableType; import org.hibernate.query.IllegalQueryOperationException; import org.hibernate.query.Page; import org.hibernate.query.Query; @@ -1091,7 +1092,7 @@ public

SqmQueryImplementor setParameter(String name, P value, Class

ja } @Override - public

SqmQueryImplementor setParameter(String name, P value, BindableType

type) { + public

SqmQueryImplementor setParameter(String name, P value, Type

type) { super.setParameter( name, value, type ); return this; } @@ -1115,7 +1116,7 @@ public

SqmQueryImplementor setParameter(int position, P value, Class

j } @Override - public

SqmQueryImplementor setParameter(int position, P value, BindableType

type) { + public

SqmQueryImplementor setParameter(int position, P value, Type

type) { super.setParameter( position, value, type ); return this; } @@ -1139,7 +1140,7 @@ public

SqmQueryImplementor setParameter(QueryParameter

parameter, P va } @Override - public

SqmQueryImplementor setParameter(QueryParameter

parameter, P value, BindableType

type) { + public

SqmQueryImplementor setParameter(QueryParameter

parameter, P value, Type

type) { super.setParameter( parameter, value, type ); return this; } @@ -1199,7 +1200,7 @@ public

SqmQueryImplementor setParameterList(String name, Collection SqmQueryImplementor setParameterList(String name, Collection values, BindableType

type) { + public

SqmQueryImplementor setParameterList(String name, Collection values, Type

type) { super.setParameterList( name, values, type ); return this; } @@ -1217,7 +1218,7 @@ public

SqmQueryImplementor setParameterList(String name, P[] values, Clas } @Override - public

SqmQueryImplementor setParameterList(String name, P[] values, BindableType

type) { + public

SqmQueryImplementor setParameterList(String name, P[] values, Type

type) { super.setParameterList( name, values, type ); return this; } @@ -1235,7 +1236,7 @@ public

SqmQueryImplementor setParameterList(int position, Collection SqmQueryImplementor setParameterList(int position, Collection values, BindableType

type) { + public

SqmQueryImplementor setParameterList(int position, Collection values, Type

type) { super.setParameterList( position, values, type ); return this; } @@ -1253,7 +1254,7 @@ public

SqmQueryImplementor setParameterList(int position, P[] values, Cla } @Override - public

SqmQueryImplementor setParameterList(int position, P[] values, BindableType

type) { + public

SqmQueryImplementor setParameterList(int position, P[] values, Type

type) { super.setParameterList( position, values, type ); return this; } @@ -1271,7 +1272,7 @@ public

SqmQueryImplementor setParameterList(QueryParameter

parameter, } @Override - public

SqmQueryImplementor setParameterList(QueryParameter

parameter, Collection values, BindableType

type) { + public

SqmQueryImplementor setParameterList(QueryParameter

parameter, Collection values, Type

type) { super.setParameterList( parameter, values, type ); return this; } @@ -1289,7 +1290,7 @@ public

SqmQueryImplementor setParameterList(QueryParameter

parameter, } @Override - public

SqmQueryImplementor setParameterList(QueryParameter

parameter, P[] values, BindableType

type) { + public

SqmQueryImplementor setParameterList(QueryParameter

parameter, P[] values, Type

type) { super.setParameterList( parameter, values, type ); return this; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java index 8c9f3b63d684..4acbb27dd573 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java @@ -48,10 +48,10 @@ import org.hibernate.metamodel.model.domain.PersistentAttribute; import org.hibernate.metamodel.model.domain.internal.EntitySqmPathSource; import org.hibernate.metamodel.spi.MappingMetamodelImplementor; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.query.spi.ImmutableEntityUpdateQueryHandlingMode; import org.hibernate.query.NullPrecedence; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.metamodel.model.domain.ReturnableType; import org.hibernate.query.SemanticException; import org.hibernate.query.SortDirection; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmSelectionQueryImpl.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmSelectionQueryImpl.java index 922bc968a46e..05884d6ea9af 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmSelectionQueryImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmSelectionQueryImpl.java @@ -20,8 +20,9 @@ import jakarta.persistence.Parameter; import jakarta.persistence.PessimisticLockScope; import jakarta.persistence.TemporalType; - import jakarta.persistence.Timeout; +import jakarta.persistence.metamodel.Type; + import org.hibernate.CacheMode; import org.hibernate.FlushMode; import org.hibernate.query.QueryFlushMode; @@ -31,7 +32,6 @@ import org.hibernate.engine.spi.SharedSessionContractImplementor; import org.hibernate.graph.spi.AppliedGraph; import org.hibernate.internal.util.collections.IdentitySet; -import org.hibernate.query.BindableType; import org.hibernate.query.KeyedPage; import org.hibernate.query.Order; import org.hibernate.query.Page; @@ -43,6 +43,7 @@ import org.hibernate.query.hql.internal.NamedHqlQueryMementoImpl; import org.hibernate.query.internal.DelegatingDomainQueryExecutionContext; import org.hibernate.query.internal.ParameterMetadataImpl; +import org.hibernate.type.BindableType; import org.hibernate.query.spi.DomainQueryExecutionContext; import org.hibernate.query.spi.HqlInterpretation; import org.hibernate.query.spi.MutableQueryOptions; @@ -724,7 +725,7 @@ public

SqmSelectionQuery setParameter(String name, P value, Class

java } @Override - public

SqmSelectionQuery setParameter(String name, P value, BindableType

type) { + public

SqmSelectionQuery setParameter(String name, P value, Type

type) { super.setParameter( name, value, type ); return this; } @@ -748,7 +749,7 @@ public

SqmSelectionQuery setParameter(int position, P value, Class

jav } @Override - public

SqmSelectionQuery setParameter(int position, P value, BindableType

type) { + public

SqmSelectionQuery setParameter(int position, P value, Type

type) { super.setParameter( position, value, type ); return this; } @@ -772,7 +773,7 @@ public

SqmSelectionQuery setParameter(QueryParameter

parameter, P valu } @Override - public

SqmSelectionQuery setParameter(QueryParameter

parameter, P value, BindableType

type) { + public

SqmSelectionQuery setParameter(QueryParameter

parameter, P value, Type

type) { super.setParameter( parameter, value, type ); return this; } @@ -832,7 +833,7 @@ public

SqmSelectionQuery setParameterList(String name, Collection SqmSelectionQuery setParameterList(String name, Collection values, BindableType

type) { + public

SqmSelectionQuery setParameterList(String name, Collection values, Type

type) { super.setParameterList( name, values, type ); return this; } @@ -850,7 +851,7 @@ public

SqmSelectionQuery setParameterList(String name, P[] values, Class< } @Override - public

SqmSelectionQuery setParameterList(String name, P[] values, BindableType

type) { + public

SqmSelectionQuery setParameterList(String name, P[] values, Type

type) { super.setParameterList( name, values, type ); return this; } @@ -868,7 +869,7 @@ public

SqmSelectionQuery setParameterList(int position, Collection SqmSelectionQuery setParameterList(int position, Collection values, BindableType

type) { + public

SqmSelectionQuery setParameterList(int position, Collection values, Type

type) { super.setParameterList( position, values, type ); return this; } @@ -886,7 +887,7 @@ public

SqmSelectionQuery setParameterList(int position, P[] values, Class } @Override - public

SqmSelectionQuery setParameterList(int position, P[] values, BindableType

type) { + public

SqmSelectionQuery setParameterList(int position, P[] values, Type

type) { super.setParameterList( position, values, type ); return this; } @@ -904,7 +905,7 @@ public

SqmSelectionQuery setParameterList(QueryParameter

parameter, Co } @Override - public

SqmSelectionQuery setParameterList(QueryParameter

parameter, Collection values, BindableType

type) { + public

SqmSelectionQuery setParameterList(QueryParameter

parameter, Collection values, Type

type) { super.setParameterList( parameter, values, type ); return this; } @@ -922,7 +923,7 @@ public

SqmSelectionQuery setParameterList(QueryParameter

parameter, P[ } @Override - public

SqmSelectionQuery setParameterList(QueryParameter

parameter, P[] values, BindableType

type) { + public

SqmSelectionQuery setParameterList(QueryParameter

parameter, P[] values, Type

type) { super.setParameterList( parameter, values, type ); return this; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java index 2f88ea15f10a..1547c627c5b9 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java @@ -15,7 +15,7 @@ import org.hibernate.query.sqm.tuple.TupleType; import org.hibernate.metamodel.model.domain.internal.EntityDiscriminatorSqmPathSource; import org.hibernate.persister.entity.EntityPersister; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.SemanticException; import org.hibernate.query.sqm.BinaryArithmeticOperator; import org.hibernate.query.sqm.SqmExpressible; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/ArgumentTypesValidator.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/ArgumentTypesValidator.java index 8c48dbab885f..55742f70d016 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/ArgumentTypesValidator.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/ArgumentTypesValidator.java @@ -12,7 +12,7 @@ import org.hibernate.metamodel.mapping.JdbcMapping; import org.hibernate.metamodel.mapping.JdbcMappingContainer; import org.hibernate.query.sqm.tuple.TupleType; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.tree.SqmTypedNode; import org.hibernate.query.sqm.tree.expression.SqmCollation; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/ArgumentsValidator.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/ArgumentsValidator.java index dab7cffd91c8..0945871bdb64 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/ArgumentsValidator.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/ArgumentsValidator.java @@ -4,7 +4,7 @@ */ package org.hibernate.query.sqm.produce.function; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.sqm.tree.SqmTypedNode; import org.hibernate.sql.ast.tree.SqlAstNode; import org.hibernate.type.spi.TypeConfiguration; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/StandardArgumentsValidators.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/StandardArgumentsValidators.java index 635872d4de28..f2fc5ae9c253 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/StandardArgumentsValidators.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/StandardArgumentsValidators.java @@ -4,7 +4,7 @@ */ package org.hibernate.query.sqm.produce.function; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.sqm.tree.SqmTypedNode; import java.util.List; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/spi/DelegatingSqmSelectionQueryImplementor.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/spi/DelegatingSqmSelectionQueryImplementor.java index b123aafeefa0..372e32d29297 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/spi/DelegatingSqmSelectionQueryImplementor.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/spi/DelegatingSqmSelectionQueryImplementor.java @@ -13,8 +13,6 @@ import java.util.Optional; import java.util.stream.Stream; -import jakarta.persistence.PessimisticLockScope; -import jakarta.persistence.Timeout; import org.hibernate.CacheMode; import org.hibernate.FlushMode; import org.hibernate.Incubating; @@ -23,7 +21,6 @@ import org.hibernate.ScrollMode; import org.hibernate.ScrollableResults; import org.hibernate.graph.GraphSemantic; -import org.hibernate.query.BindableType; import org.hibernate.query.KeyedPage; import org.hibernate.query.KeyedResultList; import org.hibernate.query.Page; @@ -44,6 +41,9 @@ import jakarta.persistence.LockModeType; import jakarta.persistence.Parameter; import jakarta.persistence.TemporalType; +import jakarta.persistence.PessimisticLockScope; +import jakarta.persistence.Timeout; +import jakarta.persistence.metamodel.Type; @Incubating public abstract class DelegatingSqmSelectionQueryImplementor implements SqmSelectionQueryImplementor { @@ -347,7 +347,7 @@ public

SqmSelectionQueryImplementor setParameter(String name, P value, Cl } @Override - public

SqmSelectionQueryImplementor setParameter(String name, P value, BindableType

type) { + public

SqmSelectionQueryImplementor setParameter(String name, P value, Type

type) { getDelegate().setParameter( name, value, type ); return this; } @@ -383,7 +383,7 @@ public

SqmSelectionQueryImplementor setParameter(int position, P value, C } @Override - public

SqmSelectionQueryImplementor setParameter(int position, P value, BindableType

type) { + public

SqmSelectionQueryImplementor setParameter(int position, P value, Type

type) { getDelegate().setParameter( position, value, type ); return this; } @@ -419,7 +419,7 @@ public

SqmSelectionQueryImplementor setParameter(QueryParameter

parame } @Override - public

SqmSelectionQueryImplementor setParameter(QueryParameter

parameter, P val, BindableType

type) { + public

SqmSelectionQueryImplementor setParameter(QueryParameter

parameter, P val, Type

type) { getDelegate().setParameter( parameter, val, type ); return this; } @@ -458,7 +458,7 @@ public

SqmSelectionQueryImplementor setParameterList(String name, Collect public

SqmSelectionQueryImplementor setParameterList( String name, Collection values, - BindableType

type) { + Type

type) { getDelegate().setParameterList( name, values, type ); return this; } @@ -476,7 +476,7 @@ public

SqmSelectionQueryImplementor setParameterList(String name, P[] val } @Override - public

SqmSelectionQueryImplementor setParameterList(String name, P[] values, BindableType

type) { + public

SqmSelectionQueryImplementor setParameterList(String name, P[] values, Type

type) { getDelegate().setParameterList( name, values, type ); return this; } @@ -497,7 +497,7 @@ public

SqmSelectionQueryImplementor setParameterList(int position, Collec public

SqmSelectionQueryImplementor setParameterList( int position, Collection values, - BindableType

type) { + Type

type) { getDelegate().setParameterList( position, values, type ); return this; } @@ -515,7 +515,7 @@ public

SqmSelectionQueryImplementor setParameterList(int position, P[] va } @Override - public

SqmSelectionQueryImplementor setParameterList(int position, P[] values, BindableType

type) { + public

SqmSelectionQueryImplementor setParameterList(int position, P[] values, Type

type) { getDelegate().setParameterList( position, values, type ); return this; } @@ -539,7 +539,7 @@ public

SqmSelectionQueryImplementor setParameterList( public

SqmSelectionQueryImplementor setParameterList( QueryParameter

parameter, Collection values, - BindableType

type) { + Type

type) { getDelegate().setParameterList( parameter, values, type ); return this; } @@ -557,7 +557,7 @@ public

SqmSelectionQueryImplementor setParameterList(QueryParameter

pa } @Override - public

SqmSelectionQueryImplementor setParameterList(QueryParameter

parameter, P[] values, BindableType

type) { + public

SqmSelectionQueryImplementor setParameterList(QueryParameter

parameter, P[] values, Type

type) { getDelegate().setParameterList( parameter, values, type ); return this; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/spi/SqmCreationContext.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/spi/SqmCreationContext.java index d715c63f9982..68faa4a8adc5 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/spi/SqmCreationContext.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/spi/SqmCreationContext.java @@ -7,7 +7,7 @@ import org.hibernate.Incubating; import org.hibernate.metamodel.MappingMetamodel; import org.hibernate.metamodel.model.domain.JpaMetamodel; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.spi.QueryEngine; import org.hibernate.query.sqm.NodeBuilder; 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 799b556939a5..6542eaec3d88 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 @@ -57,7 +57,7 @@ import org.hibernate.metamodel.model.domain.internal.EntityTypeImpl; import org.hibernate.persister.entity.EntityNameUse; import org.hibernate.persister.entity.EntityPersister; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.query.QueryLogging; import org.hibernate.query.SemanticException; import org.hibernate.query.SortDirection; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AbstractSqmParameter.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AbstractSqmParameter.java index a443b6d99137..024ae910a771 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AbstractSqmParameter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AbstractSqmParameter.java @@ -5,7 +5,7 @@ package org.hibernate.query.sqm.tree.expression; import org.hibernate.metamodel.model.domain.PluralPersistentAttribute; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmExpressible; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/JpaCriteriaParameter.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/JpaCriteriaParameter.java index 45ea3c58163c..233747760991 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/JpaCriteriaParameter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/JpaCriteriaParameter.java @@ -7,9 +7,9 @@ import java.util.Objects; import org.hibernate.procedure.spi.NamedCallableQueryMemento; -import org.hibernate.query.BindableType; import org.hibernate.query.ParameterMetadata; import org.hibernate.query.criteria.JpaParameterExpression; +import org.hibernate.type.BindableType; import org.hibernate.query.spi.QueryParameterImplementor; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpressionHelper.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpressionHelper.java index 0dc8d27d59f3..f65ef4d8948f 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpressionHelper.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpressionHelper.java @@ -5,8 +5,8 @@ package org.hibernate.query.sqm.tree.expression; import org.hibernate.metamodel.model.domain.internal.EmbeddedSqmPathSource; -import org.hibernate.query.BindableType; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindableType; +import org.hibernate.type.BindingContext; import org.hibernate.query.common.TemporalUnit; import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.BinaryArithmeticOperator; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJpaCriteriaParameterWrapper.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJpaCriteriaParameterWrapper.java index aa5f2a4512b2..2daad8a02939 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJpaCriteriaParameterWrapper.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJpaCriteriaParameterWrapper.java @@ -6,7 +6,7 @@ import java.util.function.Consumer; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; import org.hibernate.query.sqm.tree.SqmCopyContext; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmParameter.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmParameter.java index ed622affb3c3..4b766f4cfeea 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmParameter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmParameter.java @@ -5,7 +5,7 @@ package org.hibernate.query.sqm.tree.expression; import org.hibernate.HibernateException; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.query.criteria.JpaParameterExpression; import org.hibernate.query.sqm.tree.SqmCopyContext; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/ValueBindJpaCriteriaParameter.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/ValueBindJpaCriteriaParameter.java index 63069c9750b8..ffa3be729f16 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/ValueBindJpaCriteriaParameter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/ValueBindJpaCriteriaParameter.java @@ -4,7 +4,7 @@ */ package org.hibernate.query.sqm.tree.expression; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.tree.SqmCopyContext; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/ParameterCollector.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/ParameterCollector.java index 9c9afeb742ba..ac8a0d48e219 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/ParameterCollector.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/ParameterCollector.java @@ -9,7 +9,7 @@ import java.util.Set; import java.util.function.Consumer; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.query.sqm.SqmBindable; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.spi.BaseSemanticQueryWalker; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmMemberOfPredicate.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmMemberOfPredicate.java index 0307436604f0..bb41dc95de71 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmMemberOfPredicate.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmMemberOfPredicate.java @@ -4,7 +4,7 @@ */ package org.hibernate.query.sqm.tree.predicate; -import org.hibernate.query.BindableType; +import org.hibernate.metamodel.model.domain.SimpleDomainType; import org.hibernate.query.SemanticException; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; @@ -37,7 +37,7 @@ public SqmMemberOfPredicate( this.pluralPath = pluralPath; this.leftHandExpression = leftHandExpression; - final BindableType elementType = pluralPath.getPluralAttribute().getElementType(); + final SimpleDomainType elementType = pluralPath.getPluralAttribute().getElementType(); final SqmBindable simpleDomainType = nodeBuilder.resolveExpressible( elementType ); if ( !areTypesComparable( leftHandExpression.getNodeType(), simpleDomainType, nodeBuilder ) ) { diff --git a/hibernate-core/src/main/java/org/hibernate/sql/ast/spi/SqlAstCreationContext.java b/hibernate-core/src/main/java/org/hibernate/sql/ast/spi/SqlAstCreationContext.java index ec689ab2ad12..17108a705f9a 100644 --- a/hibernate-core/src/main/java/org/hibernate/sql/ast/spi/SqlAstCreationContext.java +++ b/hibernate-core/src/main/java/org/hibernate/sql/ast/spi/SqlAstCreationContext.java @@ -8,8 +8,8 @@ import org.hibernate.engine.profile.FetchProfile; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.metamodel.spi.MappingMetamodelImplementor; -import org.hibernate.query.spi.BindingContext; import org.hibernate.query.sqm.function.SqmFunctionRegistry; +import org.hibernate.type.BindingContext; import org.hibernate.type.descriptor.WrapperOptions; /** diff --git a/hibernate-core/src/main/java/org/hibernate/sql/exec/internal/AbstractJdbcParameter.java b/hibernate-core/src/main/java/org/hibernate/sql/exec/internal/AbstractJdbcParameter.java index 7c240edb04fa..2d3b2165b9a3 100644 --- a/hibernate-core/src/main/java/org/hibernate/sql/exec/internal/AbstractJdbcParameter.java +++ b/hibernate-core/src/main/java/org/hibernate/sql/exec/internal/AbstractJdbcParameter.java @@ -16,7 +16,7 @@ import org.hibernate.metamodel.mapping.MappingModelExpressible; import org.hibernate.metamodel.mapping.MappingType; import org.hibernate.metamodel.mapping.SqlExpressible; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.sql.ast.SqlAstWalker; import org.hibernate.sql.ast.tree.expression.JdbcParameter; import org.hibernate.sql.exec.ExecutionException; diff --git a/hibernate-core/src/main/java/org/hibernate/sql/exec/internal/JdbcParameterBindingsImpl.java b/hibernate-core/src/main/java/org/hibernate/sql/exec/internal/JdbcParameterBindingsImpl.java index 92f2ef209155..121735909106 100644 --- a/hibernate-core/src/main/java/org/hibernate/sql/exec/internal/JdbcParameterBindingsImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/sql/exec/internal/JdbcParameterBindingsImpl.java @@ -15,7 +15,7 @@ import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.metamodel.mapping.BasicValuedMapping; import org.hibernate.metamodel.mapping.JdbcMapping; -import org.hibernate.query.BindableType; +import org.hibernate.type.BindableType; import org.hibernate.query.spi.QueryParameterBinding; import org.hibernate.query.spi.QueryParameterBindings; import org.hibernate.query.spi.QueryParameterImplementor; diff --git a/hibernate-core/src/main/java/org/hibernate/sql/exec/spi/JdbcParameterBindings.java b/hibernate-core/src/main/java/org/hibernate/sql/exec/spi/JdbcParameterBindings.java index 3c06bf68508b..b3ef87991162 100644 --- a/hibernate-core/src/main/java/org/hibernate/sql/exec/spi/JdbcParameterBindings.java +++ b/hibernate-core/src/main/java/org/hibernate/sql/exec/spi/JdbcParameterBindings.java @@ -12,9 +12,9 @@ import org.hibernate.metamodel.mapping.BasicValuedMapping; import org.hibernate.metamodel.mapping.Bindable; import org.hibernate.metamodel.mapping.JdbcMapping; -import org.hibernate.query.internal.BindingTypeHelper; import org.hibernate.sql.ast.tree.expression.JdbcParameter; import org.hibernate.sql.exec.internal.JdbcParameterBindingImpl; +import org.hibernate.type.internal.BindingTypeHelper; import org.hibernate.type.spi.TypeConfiguration; /** diff --git a/hibernate-core/src/main/java/org/hibernate/type/BasicType.java b/hibernate-core/src/main/java/org/hibernate/type/BasicType.java index 95b5749083b2..97bc10be319c 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/BasicType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/BasicType.java @@ -34,6 +34,11 @@ public interface BasicType */ String[] getRegistrationKeys(); + @Override + default Class getBindableJavaType() { + return BasicDomainType.super.getBindableJavaType(); + } + @Override default MappingType getMappedType() { return this; diff --git a/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java b/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java index 6ecc1452f44f..7309bbe32740 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java +++ b/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java @@ -6,8 +6,6 @@ import java.io.Serializable; -import org.hibernate.query.spi.BindableTypeImplementor; -import org.hibernate.query.spi.BindingContext; import org.hibernate.query.sqm.SqmBindable; import org.hibernate.type.descriptor.converter.spi.BasicValueConverter; @@ -18,7 +16,7 @@ * * @see StandardBasicTypes */ -public final class BasicTypeReference implements BindableTypeImplementor, Serializable { +public final class BasicTypeReference implements BindableType, Serializable { private final String name; private final Class javaType; private final int sqlTypeCode; diff --git a/hibernate-core/src/main/java/org/hibernate/type/BindableType.java b/hibernate-core/src/main/java/org/hibernate/type/BindableType.java new file mode 100644 index 000000000000..228b86834112 --- /dev/null +++ b/hibernate-core/src/main/java/org/hibernate/type/BindableType.java @@ -0,0 +1,48 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.type; + +import jakarta.persistence.metamodel.Type; + +import org.hibernate.Incubating; +import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmExpressible; + +/** + * Represents a type of argument which can be bound to a positional or named + * {@linkplain org.hibernate.query.CommonQueryContract query} parameter. + *

+ * An instance of {@code BindableType} may be passed to operations like + * {@link org.hibernate.query.CommonQueryContract#setParameter(int, Object, Type)} and + * {@link org.hibernate.query.CommonQueryContract#setParameter(String, Object, Type)} + * to disambiguate the interpretation of the argument. + * + * @implNote Every implementation of {@link Type} must also implement this SPI. + * + * @param the type of the parameter + * + * @see org.hibernate.type.BasicTypeReference + * @see org.hibernate.type.StandardBasicTypes + * + * @author Steve Ebersole + * @author Gavin King + */ +@Incubating +public interface BindableType extends Type { + /** + * Resolve this parameter type to the corresponding {@link SqmExpressible}. + */ + SqmBindable resolveExpressible(BindingContext bindingContext); + + /** + * The expected Java type of the argument to the query parameter. + */ + Class getBindableJavaType(); + + @Override + default Class getJavaType() { + return getBindableJavaType(); + } +} diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/BindingContext.java b/hibernate-core/src/main/java/org/hibernate/type/BindingContext.java similarity index 83% rename from hibernate-core/src/main/java/org/hibernate/query/spi/BindingContext.java rename to hibernate-core/src/main/java/org/hibernate/type/BindingContext.java index 26ad132a9048..b99924f99da0 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/BindingContext.java +++ b/hibernate-core/src/main/java/org/hibernate/type/BindingContext.java @@ -2,12 +2,13 @@ * SPDX-License-Identifier: Apache-2.0 * Copyright Red Hat Inc. and Hibernate Authors */ -package org.hibernate.query.spi; +package org.hibernate.type; + +import jakarta.persistence.metamodel.Type; import org.hibernate.Incubating; import org.hibernate.metamodel.MappingMetamodel; import org.hibernate.metamodel.model.domain.JpaMetamodel; -import org.hibernate.query.BindableType; import org.hibernate.query.sqm.SqmBindable; import org.hibernate.type.spi.TypeConfiguration; @@ -19,7 +20,7 @@ * * @since 7.0 * - * @see BindableTypeImplementor#resolveExpressible(BindingContext) + * @see BindableType#resolveExpressible(BindingContext) * @see org.hibernate.query.sqm.SqmBindable#resolveExpressible(BindingContext) * @see org.hibernate.query.sqm.produce.function.ArgumentsValidator#validate(java.util.List, String, BindingContext) * @see org.hibernate.query.sqm.internal.TypecheckUtil @@ -42,11 +43,11 @@ public interface BindingContext { * * @since 7.0 */ - default SqmBindable resolveExpressible(BindableType bindableType) { + default SqmBindable resolveExpressible(Type bindableType) { if ( bindableType == null ) { return null; } - else if ( bindableType instanceof BindableTypeImplementor implementor) { + else if ( bindableType instanceof BindableType implementor) { return implementor.resolveExpressible( this ); } else { diff --git a/hibernate-core/src/main/java/org/hibernate/type/ComponentType.java b/hibernate-core/src/main/java/org/hibernate/type/ComponentType.java index 3fc8d4f80688..a3ec2323da4f 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/ComponentType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/ComponentType.java @@ -34,7 +34,6 @@ import org.hibernate.metamodel.spi.EmbeddableInstantiator; import org.hibernate.metamodel.spi.EmbeddableRepresentationStrategy; import org.hibernate.property.access.spi.PropertyAccess; -import org.hibernate.query.spi.BindingContext; import org.hibernate.query.sqm.tree.domain.SqmEmbeddableDomainType; import org.hibernate.type.descriptor.ValueExtractor; import org.hibernate.type.descriptor.jdbc.JdbcType; diff --git a/hibernate-core/src/main/java/org/hibernate/type/OutputableType.java b/hibernate-core/src/main/java/org/hibernate/type/OutputableType.java index 158c1177be87..2b8900eb4a49 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/OutputableType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/OutputableType.java @@ -9,7 +9,6 @@ import org.hibernate.Incubating; import org.hibernate.engine.spi.SharedSessionContractImplementor; -import org.hibernate.query.BindableType; import org.hibernate.type.descriptor.jdbc.JdbcType; /** diff --git a/hibernate-core/src/main/java/org/hibernate/type/ProcedureParameterExtractionAware.java b/hibernate-core/src/main/java/org/hibernate/type/ProcedureParameterExtractionAware.java index fce4ba768834..51c685deeb02 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/ProcedureParameterExtractionAware.java +++ b/hibernate-core/src/main/java/org/hibernate/type/ProcedureParameterExtractionAware.java @@ -4,8 +4,6 @@ */ package org.hibernate.type; -import org.hibernate.query.spi.BindableTypeImplementor; - /** * Optional {@link Type} contract for implementations that are aware of * how to extract values from stored procedure OUT/INOUT parameters. @@ -13,5 +11,5 @@ * @author Steve Ebersole */ public interface ProcedureParameterExtractionAware - extends BindableTypeImplementor, OutputableType { + extends BindableType, OutputableType { } diff --git a/hibernate-core/src/main/java/org/hibernate/query/internal/BindingTypeHelper.java b/hibernate-core/src/main/java/org/hibernate/type/internal/BindingTypeHelper.java similarity index 98% rename from hibernate-core/src/main/java/org/hibernate/query/internal/BindingTypeHelper.java rename to hibernate-core/src/main/java/org/hibernate/type/internal/BindingTypeHelper.java index 0782c0b53148..41696b4323a2 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/internal/BindingTypeHelper.java +++ b/hibernate-core/src/main/java/org/hibernate/type/internal/BindingTypeHelper.java @@ -2,7 +2,7 @@ * SPDX-License-Identifier: Apache-2.0 * Copyright Red Hat Inc. and Hibernate Authors */ -package org.hibernate.query.internal; +package org.hibernate.type.internal; import java.time.Instant; import java.time.LocalTime; @@ -12,8 +12,8 @@ import java.util.Calendar; import org.hibernate.metamodel.mapping.JdbcMapping; -import org.hibernate.query.BindableType; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindableType; +import org.hibernate.type.BindingContext; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.type.StandardBasicTypes; import org.hibernate.type.descriptor.java.JavaTypeHelper; diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/mapping/converted/converter/ConverterTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/mapping/converted/converter/ConverterTest.java index 7d3fd31a3853..446d7f1bb5f4 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/mapping/converted/converter/ConverterTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/mapping/converted/converter/ConverterTest.java @@ -17,8 +17,8 @@ import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.metamodel.spi.MappingMetamodelImplementor; -import org.hibernate.query.BindableType; import org.hibernate.query.Query; +import org.hibernate.type.BindableType; import org.hibernate.type.Type; import org.hibernate.testing.orm.junit.JiraKey; diff --git a/hibernate-vector/src/main/java/org/hibernate/vector/VectorArgumentValidator.java b/hibernate-vector/src/main/java/org/hibernate/vector/VectorArgumentValidator.java index 7ad74de0deea..4bd1632c50be 100644 --- a/hibernate-vector/src/main/java/org/hibernate/vector/VectorArgumentValidator.java +++ b/hibernate-vector/src/main/java/org/hibernate/vector/VectorArgumentValidator.java @@ -6,7 +6,7 @@ import java.util.List; -import org.hibernate.query.spi.BindingContext; +import org.hibernate.type.BindingContext; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.produce.function.ArgumentsValidator; import org.hibernate.query.sqm.produce.function.FunctionArgumentException; From 8e6cd4af48715b0891897c59686c49df772e9c5d Mon Sep 17 00:00:00 2001 From: Gavin King Date: Mon, 12 May 2025 11:08:19 +0200 Subject: [PATCH 7/9] HHH-19449 simplify the whole design Remove BindableType.getBindableJavaType() which created all sorts of confusion with JPAs Bindable.getBindableJavaType(). Now can just use Type.getJavaType() for this. --- .../model/internal/NamedGraphCreatorJpa.java | 2 +- .../spi/AbstractParameterDescriptor.java | 2 +- .../graph/internal/AttributeNodeImpl.java | 5 +-- .../metamodel/internal/MetadataContext.java | 5 ++- .../metamodel/mapping/CollectionPart.java | 43 ++++++++----------- .../model/domain/BasicDomainType.java | 5 --- .../metamodel/model/domain/DomainType.java | 11 ++--- .../model/domain/ManagedDomainType.java | 22 ++++++++-- .../model/domain/SimpleDomainType.java | 7 +-- .../domain/internal/AbstractManagedType.java | 11 ++--- .../internal/AbstractPluralAttribute.java | 7 ++- .../internal/AbstractSqmPathSource.java | 2 +- .../internal/AnyMappingDomainTypeImpl.java | 8 ++-- .../model/domain/internal/ArrayTupleType.java | 9 +--- .../model/domain/internal/BasicTypeImpl.java | 9 +--- .../domain/internal/EmbeddableTypeImpl.java | 5 +++ .../model/domain/internal/EntityTypeImpl.java | 5 +++ .../domain/internal/ListAttributeImpl.java | 13 ++---- .../domain/internal/MapAttributeImpl.java | 13 ++---- .../internal/MappedSuperclassTypeImpl.java | 5 +++ .../domain/internal/SetAttributeImpl.java | 1 + .../internal/SingularAttributeImpl.java | 8 ++-- .../procedure/internal/ProcedureCallImpl.java | 4 +- .../internal/QueryParameterBindingImpl.java | 4 +- .../internal/QueryParameterBindingsImpl.java | 2 +- .../spi/AbstractCommonQueryContract.java | 4 +- .../query/spi/AbstractQueryParameter.java | 2 +- .../spi/QueryParameterBindingValidator.java | 6 +-- .../hibernate/query/sqm/SqmExpressible.java | 12 ++++-- .../hibernate/query/sqm/SqmPathSource.java | 2 - .../sqm/internal/SqmCriteriaNodeBuilder.java | 4 +- .../hibernate/query/sqm/internal/SqmUtil.java | 6 +-- .../query/sqm/internal/TypecheckUtil.java | 2 +- .../query/sqm/tree/cte/SqmCteTableColumn.java | 2 +- .../tree/domain/SqmBasicValuedSimplePath.java | 5 --- .../query/sqm/tree/domain/SqmDomainType.java | 5 --- .../domain/SqmEmbeddedValuedSimplePath.java | 5 --- .../sqm/tree/domain/SqmFunctionPath.java | 2 +- .../sqm/tree/domain/SqmMapEntryReference.java | 5 --- .../domain/SqmPolymorphicRootDescriptor.java | 12 +++--- .../tree/expression/NullSqmExpressible.java | 2 +- .../sqm/tree/expression/SqmEnumLiteral.java | 7 +-- .../sqm/tree/expression/SqmFieldLiteral.java | 7 +-- .../ValueBindJpaCriteriaParameter.java | 4 +- .../tree/select/SqmDynamicInstantiation.java | 2 +- .../tree/select/SqmJpaCompoundSelection.java | 2 +- .../AnonymousTupleSimpleSqmPathSource.java | 2 +- ...nonymousTupleSqmAssociationPathSource.java | 10 +++++ ...ymousTupleSqmAssociationPathSourceNew.java | 10 +++++ .../tuple/internal/AnonymousTupleType.java | 5 +-- .../type/AbstractStandardBasicType.java | 2 +- .../java/org/hibernate/type/BasicType.java | 9 +--- .../hibernate/type/BasicTypeReference.java | 2 +- .../org/hibernate/type/BasicTypeRegistry.java | 2 +- .../java/org/hibernate/type/BindableType.java | 13 +----- .../org/hibernate/type/ComponentType.java | 2 +- .../type/internal/BindingTypeHelper.java | 4 +- .../DefaultCatalogAndSchemaTest.java | 2 +- .../orm/test/jpa/metadata/MetadataTest.java | 13 ++++-- .../test/jpa/metadata/StaticMetadataTest.java | 3 +- .../test/jpa/metamodel/EmbeddedTypeTest.java | 2 +- 61 files changed, 180 insertions(+), 207 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/boot/model/internal/NamedGraphCreatorJpa.java b/hibernate-core/src/main/java/org/hibernate/boot/model/internal/NamedGraphCreatorJpa.java index 09f3eceee28b..5e51ff06fcbb 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/model/internal/NamedGraphCreatorJpa.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/model/internal/NamedGraphCreatorJpa.java @@ -142,7 +142,7 @@ private static SubGraphImplementor makeAttributeNodeValueSubgraph( private static SubGraphImplementor makeAttributeNodeKeySubgraph( AttributeNodeImplementor attributeNode, Class subgraphType) { final Class attributeKeyType = - attributeNode.getAttributeDescriptor().getKeyGraphType().getBindableJavaType(); + attributeNode.getAttributeDescriptor().getKeyGraphType().getJavaType(); if ( !attributeKeyType.isAssignableFrom( subgraphType ) ) { throw new AnnotationException( "Named subgraph type '" + subgraphType.getName() + "' is not a subtype of the key type '" + attributeKeyType.getName() + "'" ); diff --git a/hibernate-core/src/main/java/org/hibernate/engine/query/spi/AbstractParameterDescriptor.java b/hibernate-core/src/main/java/org/hibernate/engine/query/spi/AbstractParameterDescriptor.java index dbc4eea93eef..e33b4b5873b1 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/query/spi/AbstractParameterDescriptor.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/query/spi/AbstractParameterDescriptor.java @@ -38,7 +38,7 @@ public Integer getPosition() { @Override public Class getParameterType() { - return expectedType == null ? null : expectedType.getBindableJavaType(); + return expectedType == null ? null : expectedType.getJavaType(); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/graph/internal/AttributeNodeImpl.java b/hibernate-core/src/main/java/org/hibernate/graph/internal/AttributeNodeImpl.java index 715922a3dc8b..6856698ea440 100644 --- a/hibernate-core/src/main/java/org/hibernate/graph/internal/AttributeNodeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/graph/internal/AttributeNodeImpl.java @@ -16,7 +16,6 @@ import org.hibernate.metamodel.model.domain.PluralPersistentAttribute; import org.hibernate.metamodel.model.domain.SimpleDomainType; import org.hibernate.metamodel.model.domain.SingularPersistentAttribute; -import org.hibernate.type.BindableType; import java.util.HashMap; import java.util.Map; @@ -260,7 +259,7 @@ public SubGraphImplementor makeSubGraph() { @Override @Deprecated public SubGraphImplementor makeSubGraph(Class subtype) { final ManagedDomainType managedType = asManagedType( valueGraphType ); - if ( !((BindableType) managedType).getBindableJavaType().isAssignableFrom( subtype ) ) { + if ( !managedType.getJavaType().isAssignableFrom( subtype ) ) { throw new IllegalArgumentException( "Not a subtype: " + subtype.getName() ); } @SuppressWarnings("unchecked") @@ -284,7 +283,7 @@ public SubGraphImplementor makeKeySubGraph() { public SubGraphImplementor makeKeySubGraph(Class subtype) { checkMap(); final ManagedDomainType type = asManagedType( keyGraphType ); - if ( ! ((BindableType) type).getBindableJavaType().isAssignableFrom( subtype ) ) { + if ( !type.getJavaType().isAssignableFrom( subtype ) ) { throw new IllegalArgumentException( "Not a key subtype: " + subtype.getName() ); } @SuppressWarnings("unchecked") diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/MetadataContext.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/MetadataContext.java index 695f5fe0566a..1a46f17858aa 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/MetadataContext.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/MetadataContext.java @@ -173,8 +173,9 @@ public Map, MappedSuperclassDomainType> getMappedSuperclassTypeMap() } public void registerEntityType(PersistentClass persistentClass, EntityTypeImpl entityType) { - if ( entityType.getBindableJavaType() != null && entityType.getBindableJavaType() != Map.class ) { - entityTypes.put( entityType.getBindableJavaType(), entityType ); + final Class javaType = entityType.getJavaType(); + if ( javaType != null && javaType != Map.class ) { + entityTypes.put( javaType, entityType ); } identifiableTypesByName.put( persistentClass.getEntityName(), entityType ); diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/mapping/CollectionPart.java b/hibernate-core/src/main/java/org/hibernate/metamodel/mapping/CollectionPart.java index f8f7b63182d4..6c6ee8f869d8 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/mapping/CollectionPart.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/mapping/CollectionPart.java @@ -18,41 +18,36 @@ * @author Steve Ebersole */ public interface CollectionPart extends ValuedModelPart, Fetchable, JavaTypedExpressible { + enum Nature { /** - * The Collection element or Map element + * The Collection element or Map element. */ - ELEMENT( "{element}" ), + ELEMENT, /** - * The List index or Map key + * The List index or Map key. */ - INDEX( "{index}" ), + INDEX, /** - * The identifier for + * The identifier for and idbag. */ - ID( "{collection-id}" ); - - private final String name; - - Nature(String name) { - this.name = name; - } + ID; public String getName() { - return name; + return switch (this) { + case ELEMENT -> "{element}"; + case INDEX -> "{index}"; + case ID -> "{collection-id}"; + }; } public static Nature fromNameExact(String name) { - switch ( name ) { - case "{element}": - return ELEMENT; - case "{index}": - return INDEX; - case "{collection-id}": - return ID; - } - - return null; + return switch ( name ) { + case "{element}" -> ELEMENT; + case "{index}" -> INDEX; + case "{collection-id}" -> ID; + default -> null; + }; } public static Nature fromName(String name) { @@ -75,7 +70,7 @@ public static Nature fromName(String name) { return ELEMENT; } - if ( ID.name.equals( name ) ) { + if ( ID.getName().equals( name ) ) { return ID; } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/BasicDomainType.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/BasicDomainType.java index ce98da878f4e..3db8f6e1a2f7 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/BasicDomainType.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/BasicDomainType.java @@ -20,11 +20,6 @@ default PersistenceType getPersistenceType() { return PersistenceType.BASIC; } - @Override - default Class getBindableJavaType() { - return ReturnableType.super.getBindableJavaType(); - } - @Override default Class getJavaType() { return ReturnableType.super.getJavaType(); diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/DomainType.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/DomainType.java index 350bbf4da1ee..df86c5bcf226 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/DomainType.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/DomainType.java @@ -39,11 +39,12 @@ public interface DomainType { Class getJavaType(); /** - * The name of the type. + * The name of the type. Usually, but not always, the name of a Java class. * - * @apiNote This is the Hibernate notion of the type name. For most - * types this is just the Java type ({@link Class}) name. - * However, using the string allows for dynamic models. + * @see ManagedDomainType#getTypeName() + * @see org.hibernate.query.sqm.SqmExpressible#getTypeName() */ - String getTypeName(); + default String getTypeName() { + return getExpressibleJavaType().getTypeName(); + } } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/ManagedDomainType.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/ManagedDomainType.java index e41f5f57c38f..7ac4e5a868c0 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/ManagedDomainType.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/ManagedDomainType.java @@ -7,6 +7,7 @@ import java.util.Collection; import java.util.function.Consumer; +import org.hibernate.Internal; import org.hibernate.metamodel.RepresentationMode; import jakarta.persistence.metamodel.ManagedType; @@ -18,22 +19,33 @@ */ public interface ManagedDomainType extends DomainType, ManagedType { /** - * Get the type name. + * The name of the managed type. * * @apiNote This usually returns the name of the Java class. However, for * {@linkplain RepresentationMode#MAP dynamic models}, this returns * the symbolic name since the Java type is {@link java.util.Map}. * - * @return The type name. - * * @see #getRepresentationMode() */ + @Override String getTypeName(); + /** + * The parent {@linkplain JpaMetamodel metamodel}. + */ JpaMetamodel getMetamodel(); + /** + * The representation mode. + * + * @return {@link RepresentationMode#POJO POJO} for Java class entities, + * or {@link RepresentationMode#MAP MAP} for dynamic entities. + */ RepresentationMode getRepresentationMode(); + /** + * The Java class of the entity type. + */ @Override default Class getJavaType() { return getExpressibleJavaType().getJavaTypeClass(); @@ -44,8 +56,12 @@ default Class getJavaType() { */ ManagedDomainType getSuperType(); + /** + * The descriptors of all known managed subtypes of this type. + */ Collection> getSubTypes(); + @Internal void addSubType(ManagedDomainType subType); void visitAttributes(Consumer> action); diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/SimpleDomainType.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/SimpleDomainType.java index 6e8f25b66c55..6038ab57c083 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/SimpleDomainType.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/SimpleDomainType.java @@ -7,16 +7,11 @@ import jakarta.persistence.metamodel.Type; /** - * Describes any non-collection type + * Describes any non-collection type. * * @author Steve Ebersole */ public interface SimpleDomainType extends DomainType, Type { - - default Class getBindableJavaType() { - return getJavaType(); - } - @Override default Class getJavaType() { return getExpressibleJavaType().getJavaTypeClass(); diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AbstractManagedType.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AbstractManagedType.java index 0de20ee6e2e3..47878c06a702 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AbstractManagedType.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AbstractManagedType.java @@ -102,11 +102,6 @@ public Class getJavaType() { return super.getJavaType(); } - @Override - public Class getBindableJavaType() { - return super.getBindableJavaType(); - } - @Override public SqmManagedDomainType getSuperType() { return supertype; @@ -336,13 +331,13 @@ private SqmSingularPersistentAttribute checkTypeForSingleAttribute( private boolean hasMatchingReturnType(SingularAttribute attribute, Class javaType) { return javaType == null - || attribute.getBindableJavaType().equals( javaType ) + || attribute.getJavaType().equals( javaType ) || isPrimitiveVariant( attribute, javaType ); } protected boolean isPrimitiveVariant(SingularAttribute attribute, Class javaType) { if ( attribute != null ) { - final Class declaredType = attribute.getBindableJavaType(); + final Class declaredType = attribute.getJavaType(); if ( declaredType.isPrimitive() ) { return ( Boolean.class.equals( javaType ) && Boolean.TYPE.equals( declaredType ) ) || ( Character.class.equals( javaType ) && Character.TYPE.equals( declaredType ) ) @@ -418,7 +413,7 @@ private void checkTypeForPluralAttributes( Class elementType, PluralAttribute.CollectionType collectionType) { if ( attribute == null - || ( elementType != null && !attribute.getBindableJavaType().equals( elementType ) ) + || elementType != null && !attribute.getBindableJavaType().equals( elementType ) || attribute.getCollectionType() != collectionType ) { throw new IllegalArgumentException( attributeType + " named " + name diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AbstractPluralAttribute.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AbstractPluralAttribute.java index a64903f12b89..5b0f294ab642 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AbstractPluralAttribute.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AbstractPluralAttribute.java @@ -84,10 +84,9 @@ public SqmPathSource findSubPathSource(String name) { @Override public SqmPathSource findSubPathSource(String name, boolean includeSubtypes) { - if ( CollectionPart.Nature.ELEMENT.getName().equals( name ) ) { - return elementPathSource; - } - return elementPathSource.findSubPathSource( name, includeSubtypes ); + return CollectionPart.Nature.ELEMENT.getName().equals( name ) + ? elementPathSource + : elementPathSource.findSubPathSource( name, includeSubtypes ); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AbstractSqmPathSource.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AbstractSqmPathSource.java index b773ebb50449..c4ee0e0e6ec2 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AbstractSqmPathSource.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AbstractSqmPathSource.java @@ -31,7 +31,7 @@ public AbstractSqmPathSource( @Override public Class getBindableJavaType() { - return domainType.getBindableJavaType(); + return domainType.getJavaType(); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyMappingDomainTypeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyMappingDomainTypeImpl.java index f4e9470e5890..0edfdf9a941a 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyMappingDomainTypeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyMappingDomainTypeImpl.java @@ -60,10 +60,10 @@ public SqmDomainType getSqmType() { return this; } - @Override - public Class getBindableJavaType() { - return AnyMappingDomainType.super.getBindableJavaType(); - } +// @Override +// public Class getJavaType() { +// return AnyMappingDomainType.super.getJavaType(); +// } @Override public String getTypeName() { diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java index 41279efeda8e..250ac4057632 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java @@ -35,8 +35,8 @@ public ArrayTupleType(SqmBindable[] components) { } @Override - public Class getBindableJavaType() { - return TupleType.super.getBindableJavaType(); + public Class getJavaType() { + return TupleType.super.getJavaType(); } @Override @@ -92,11 +92,6 @@ public PersistenceType getPersistenceType() { return PersistenceType.EMBEDDABLE; } - @Override - public Class getJavaType() { - return getExpressibleJavaType().getJavaTypeClass(); - } - @Override public String toString() { return "ArrayTupleType" + Arrays.toString( components ); diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicTypeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicTypeImpl.java index 3cd274c69905..cd87addd5d72 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicTypeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicTypeImpl.java @@ -30,8 +30,8 @@ public BasicTypeImpl(JavaType javaType, JdbcType jdbcType) { } @Override - public Class getBindableJavaType() { - return BasicDomainType.super.getBindableJavaType(); + public Class getJavaType() { + return BasicDomainType.super.getJavaType(); } @Override @@ -49,11 +49,6 @@ public JavaType getExpressibleJavaType() { return javaType; } - @Override - public Class getJavaType() { - return getExpressibleJavaType().getJavaTypeClass(); - } - @Override public boolean canDoExtraction() { return true; diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddableTypeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddableTypeImpl.java index c55f1f613841..db3114c148df 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddableTypeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddableTypeImpl.java @@ -43,6 +43,11 @@ public EmbeddableTypeImpl( : new EmbeddedDiscriminatorSqmPathSource<>( discriminatorType, this ); } + @Override + public Class getBindableJavaType() { + return getJavaType(); + } + @Override public PersistenceType getPersistenceType() { return PersistenceType.EMBEDDABLE; diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EntityTypeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EntityTypeImpl.java index 469e0a928c37..8640ed6ee181 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EntityTypeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EntityTypeImpl.java @@ -120,6 +120,11 @@ public String getName() { return jpaEntityName; } + @Override + public Class getBindableJavaType() { + return getJavaType(); + } + @Override public String getHibernateEntityName() { return super.getTypeName(); diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ListAttributeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ListAttributeImpl.java index bd4f1ff02763..32c1d464a149 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ListAttributeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ListAttributeImpl.java @@ -62,16 +62,9 @@ public SqmPathSource findSubPathSource(String name) { @Override public SqmPathSource findSubPathSource(String name, boolean includeSubtypes) { - final CollectionPart.Nature nature = CollectionPart.Nature.fromNameExact( name ); - if ( nature != null ) { - switch ( nature ) { - case INDEX: - return indexPathSource; - case ELEMENT: - return getElementPathSource(); - } - } - return getElementPathSource().findSubPathSource( name, includeSubtypes ); + return CollectionPart.Nature.INDEX.getName().equals( name ) + ? indexPathSource + : super.findSubPathSource( name, includeSubtypes ); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/MapAttributeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/MapAttributeImpl.java index dd748c147f30..7aff11b32d04 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/MapAttributeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/MapAttributeImpl.java @@ -71,16 +71,9 @@ public SqmPathSource findSubPathSource(String name) { @Override public SqmPathSource findSubPathSource(String name, boolean includeSubtypes) { - final CollectionPart.Nature nature = CollectionPart.Nature.fromNameExact( name ); - if ( nature != null ) { - switch ( nature ) { - case INDEX: - return keyPathSource; - case ELEMENT: - return getElementPathSource(); - } - } - return getElementPathSource().findSubPathSource( name, includeSubtypes ); + return CollectionPart.Nature.INDEX.getName().equals( name ) + ? keyPathSource + : super.findSubPathSource( name, includeSubtypes ); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/MappedSuperclassTypeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/MappedSuperclassTypeImpl.java index 44f82f6106b4..4aa17f3e381f 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/MappedSuperclassTypeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/MappedSuperclassTypeImpl.java @@ -62,6 +62,11 @@ public MappedSuperclassTypeImpl( ); } + @Override + public Class getBindableJavaType() { + return getJavaType(); + } + @Override public SqmMappedSuperclassDomainType getSqmType() { return this; diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/SetAttributeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/SetAttributeImpl.java index 7d612183c6bb..46780ec2a81e 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/SetAttributeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/SetAttributeImpl.java @@ -20,6 +20,7 @@ public class SetAttributeImpl extends AbstractPluralAttribute, E> implements SqmSetPersistentAttribute { + public SetAttributeImpl(PluralAttributeBuilder, E, ?> xceBuilder, MetadataContext metadataContext) { super( xceBuilder, metadataContext ); } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/SingularAttributeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/SingularAttributeImpl.java index 957f9334085e..ae700218b982 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/SingularAttributeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/SingularAttributeImpl.java @@ -121,7 +121,8 @@ public SimpleDomainType getType() { @Override public Class getBindableJavaType() { - return getJavaType(); +// return getJavaType(); + return sqmPathSource.getBindableJavaType(); } @Override @@ -294,8 +295,9 @@ public boolean isOptional() { @Override public boolean isAssociation() { - return getPersistentAttributeType() == PersistentAttributeType.MANY_TO_ONE - || getPersistentAttributeType() == PersistentAttributeType.ONE_TO_ONE; + final PersistentAttributeType persistentAttributeType = getPersistentAttributeType(); + return persistentAttributeType == PersistentAttributeType.MANY_TO_ONE + || persistentAttributeType == PersistentAttributeType.ONE_TO_ONE; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureCallImpl.java b/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureCallImpl.java index 1166062ac8f5..089a5687bb87 100644 --- a/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureCallImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureCallImpl.java @@ -502,7 +502,7 @@ public ProcedureParameter registerParameter( ParameterMode mode) { final SqmBindable expressible = resolveExpressible( typeReference ); final ProcedureParameterImpl procedureParameter = - new ProcedureParameterImpl<>( position, mode, ((BindableType) typeReference).getBindableJavaType(), expressible ); + new ProcedureParameterImpl<>( position, mode, ((BindableType) typeReference).getJavaType(), expressible ); registerParameter( procedureParameter ); return procedureParameter; } @@ -552,7 +552,7 @@ public ProcedureParameterImplementor registerParameter( ParameterMode mode) { final SqmBindable expressible = resolveExpressible( typeReference ); final ProcedureParameterImpl parameter = - new ProcedureParameterImpl<>( name, mode, ((BindableType) typeReference).getBindableJavaType(), expressible ); + new ProcedureParameterImpl<>( name, mode, ((BindableType) typeReference).getJavaType(), expressible ); registerParameter( parameter ); return parameter; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterBindingImpl.java b/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterBindingImpl.java index 3996353fe5e9..5cafd791a266 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterBindingImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterBindingImpl.java @@ -144,7 +144,7 @@ private boolean handleAsMultiValue(T value, BindableType bindableType) { && value instanceof Collection && !( bindableType == null ? isRegisteredAsBasicType( value.getClass() ) - : bindableType.getBindableJavaType().isInstance( value ) ) ) { + : bindableType.getJavaType().isInstance( value ) ) ) { //noinspection unchecked setBindValues( (Collection) value ); return true; @@ -268,7 +268,7 @@ public MappingModelExpressible getType() { public boolean setType(MappingModelExpressible type) { this.type = type; // If the bind type is undetermined or the given type is a model part, then we try to apply a new bind type - if ( bindType == null || bindType.getBindableJavaType() == Object.class || type instanceof ModelPart ) { + if ( bindType == null || bindType.getJavaType() == Object.class || type instanceof ModelPart ) { if ( type instanceof BindableType ) { final boolean changed = bindType != null && type != bindType; bindType = (BindableType) type; diff --git a/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterBindingsImpl.java b/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterBindingsImpl.java index 60e6f3787ac6..2542c9cdf20f 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterBindingsImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterBindingsImpl.java @@ -285,7 +285,7 @@ else if ( binding.getBindValue() != null ) { } } - return typeConfiguration.getBasicTypeForJavaType( bindType.getBindableJavaType() ); + return typeConfiguration.getBasicTypeForJavaType( bindType.getJavaType() ); } private static class MutableCacheKeyImpl implements MutableCacheKeyBuilder { diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractCommonQueryContract.java b/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractCommonQueryContract.java index 592cf5254da7..64a4cbe4a6e1 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractCommonQueryContract.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractCommonQueryContract.java @@ -895,7 +895,7 @@ public

CommonQueryContract setParameter(Parameter

parameter, P value) { if ( type == null ) { throw new IllegalArgumentException( "TypedParameterValue has no type" ); } - if ( !parameterType.isAssignableFrom( type.getBindableJavaType() ) ) { + if ( !parameterType.isAssignableFrom( type.getJavaType() ) ) { throw new QueryArgumentException( "Given TypedParameterValue is not assignable to given Parameter type", parameterType, typedParameterValue.value() ); } @@ -1159,7 +1159,7 @@ protected Type determineType(String namedParam, Class retTyp if ( type == null && retType != null ) { type = getSession().getFactory().getMappingMetamodel().resolveParameterBindType( retType ); } - if ( retType!= null && !retType.isAssignableFrom( type.getBindableJavaType() ) ) { + if ( retType!= null && !retType.isAssignableFrom( type.getJavaType() ) ) { throw new IllegalStateException( "Parameter not of expected type: " + retType.getName() ); } //noinspection unchecked diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractQueryParameter.java b/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractQueryParameter.java index b44310a713a2..5f8fb9d869fb 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractQueryParameter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractQueryParameter.java @@ -56,6 +56,6 @@ public Integer getPosition() { @Override public Class getParameterType() { - return anticipatedType == null ? null : anticipatedType.getBindableJavaType(); + return anticipatedType == null ? null : anticipatedType.getJavaType(); } } diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBindingValidator.java b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBindingValidator.java index 4a7903283ecc..0ff8162b4b42 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBindingValidator.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBindingValidator.java @@ -42,9 +42,9 @@ public void validate( final SqmBindable sqmExpressible = bindingContext.resolveExpressible( paramType ); final Class parameterJavaType = - paramType.getBindableJavaType() != null - ? paramType.getBindableJavaType() - : sqmExpressible.getBindableJavaType(); + paramType.getJavaType() != null + ? paramType.getJavaType() + : sqmExpressible.getJavaType(); if ( parameterJavaType != null ) { if ( bind instanceof Collection collection diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmExpressible.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmExpressible.java index a2bd20814c43..11163c494c7c 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmExpressible.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmExpressible.java @@ -22,16 +22,20 @@ public interface SqmExpressible { */ JavaType getExpressibleJavaType(); + /** + * Usually the same as {@link #getExpressibleJavaType()}. But for types with + * {@linkplain org.hibernate.type.descriptor.converter.spi.BasicValueConverter + * value conversion}, the Java type of the converted value. + */ default JavaType getRelationalJavaType() { return getExpressibleJavaType(); } /** - * The name of the type. + * The name of the type. Usually, but not always, the name of a Java class. * - * @apiNote This is the Hibernate notion of the type name. For most - * types this is just the Java type ({@link Class}) name. - * However, using the string allows for dynamic models. + * @see org.hibernate.metamodel.model.domain.DomainType#getTypeName() + * @see JavaType#getTypeName() */ default String getTypeName() { // default impl to handle the general case returning the Java type name diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmPathSource.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmPathSource.java index bba640d36f3e..e73509205fd2 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmPathSource.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmPathSource.java @@ -29,8 +29,6 @@ public interface SqmPathSource /** * The type of {@linkplain SqmPath path} this source creates. - * - * @apiNote Analogous to {@link Bindable#getBindableJavaType()}. */ @Override SqmDomainType getPathType(); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java index 4acbb27dd573..7b9357e13fcd 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java @@ -1664,7 +1664,7 @@ public JavaType getExpressibleJavaType() { } @Override - public Class getBindableJavaType() { + public Class getJavaType() { return javaType.getJavaTypeClass(); } @@ -2133,7 +2133,7 @@ private boolean isInstance(BindableType bindableType, T value) return expressible.getExpressibleJavaType().isInstance( value ); } else { - return bindableType.getBindableJavaType().isInstance( value ) + return bindableType.getJavaType().isInstance( value ) || resolveExpressible( bindableType ).getExpressibleJavaType().isInstance( value ); } } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmUtil.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmUtil.java index fa78f593b2c2..c5fb8fd19a05 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmUtil.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmUtil.java @@ -937,7 +937,7 @@ public static boolean isSelectionAssignableToResultType(SqmSelection selectio else if ( selection != null && selection.getSelectableNode() instanceof SqmParameter sqmParameter ) { final Class anticipatedClass = sqmParameter.getAnticipatedType() != null - ? sqmParameter.getAnticipatedType().getBindableJavaType() + ? sqmParameter.getAnticipatedType().getJavaType() : null; return anticipatedClass != null && expectedResultType.isAssignableFrom( anticipatedClass ); @@ -1270,10 +1270,10 @@ private static boolean isValid( private static boolean isEntityIdType(SqmExpressible selectionExpressible, Class resultClass) { if ( selectionExpressible instanceof IdentifiableDomainType identifiableDomainType ) { - return resultClass.isAssignableFrom( identifiableDomainType.getIdType().getBindableJavaType() ); + return resultClass.isAssignableFrom( identifiableDomainType.getIdType().getJavaType() ); } else if ( selectionExpressible instanceof EntitySqmPathSource entityPath ) { - return resultClass.isAssignableFrom( entityPath.getPathType().getIdType().getBindableJavaType() ); + return resultClass.isAssignableFrom( entityPath.getPathType().getIdType().getJavaType() ); } else { return false; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java index 1547c627c5b9..e0e118c222ae 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java @@ -373,7 +373,7 @@ && sameJavaType( targetType, expressionType ) ) { } private static boolean sameJavaType(SqmBindable leftType, SqmBindable rightType) { - return canonicalize( leftType.getBindableJavaType() ) == canonicalize( rightType.getBindableJavaType() ); + return canonicalize( leftType.getJavaType() ) == canonicalize( rightType.getJavaType() ); } private static boolean isConvertedType(SqmExpressible type) { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTableColumn.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTableColumn.java index d0d2c388477c..2d24092ce781 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTableColumn.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTableColumn.java @@ -51,6 +51,6 @@ public String getName() { @Override public Class getJavaType() { - return typeExpressible == null ? null : typeExpressible.getBindableJavaType(); + return typeExpressible == null ? null : typeExpressible.getJavaType(); } } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java index 00aad1dadda6..46e592f0ca93 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java @@ -187,11 +187,6 @@ public JavaType getExpressibleJavaType() { return super.getExpressible().getExpressibleJavaType(); } - @Override - public Class getBindableJavaType() { - return getJavaType(); - } - @Override public SqmDomainType getSqmType() { return getResolvedModel().getSqmType(); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java index 2a619bf3ed54..04e19c1608e0 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java @@ -12,11 +12,6 @@ public interface SqmDomainType extends DomainType, SqmBindable { - @Override - default Class getJavaType() { - return SqmBindable.super.getJavaType(); - } - @Override default String getTypeName() { return SqmBindable.super.getTypeName(); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddedValuedSimplePath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddedValuedSimplePath.java index 2acf6a110632..80c269fd6726 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddedValuedSimplePath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddedValuedSimplePath.java @@ -114,11 +114,6 @@ public Class getJavaType() { return getJavaTypeDescriptor().getJavaTypeClass(); } - @Override - public Class getBindableJavaType() { - return getJavaType(); - } - @Override public JavaType getRelationalJavaType() { return super.getExpressible().getRelationalJavaType(); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmFunctionPath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmFunctionPath.java index 749f98f9f70f..ba137f79616d 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmFunctionPath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmFunctionPath.java @@ -51,7 +51,7 @@ public SqmFunctionPath(NavigablePath navigablePath, SqmFunction function) { private static SqmPathSource determinePathSource(NavigablePath navigablePath, SqmFunction function) { //noinspection unchecked final SqmBindable nodeType = (SqmBindable) function.getNodeType(); - final Class bindableJavaType = nodeType.getBindableJavaType(); + final Class bindableJavaType = nodeType.getJavaType(); final ManagedType managedType = function.nodeBuilder() .getJpaMetamodel() .findManagedType( bindableJavaType ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmMapEntryReference.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmMapEntryReference.java index 6d6672e1468d..126b9337157f 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmMapEntryReference.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmMapEntryReference.java @@ -134,11 +134,6 @@ public SqmDomainType> getSqmType() { return null; } - @Override - public Class> getBindableJavaType() { - return getNodeType().getBindableJavaType(); - } - @Override public NodeBuilder nodeBuilder() { return nodeBuilder; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmPolymorphicRootDescriptor.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmPolymorphicRootDescriptor.java index d846efe0aa06..8dc6b8482fec 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmPolymorphicRootDescriptor.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmPolymorphicRootDescriptor.java @@ -122,6 +122,11 @@ public Set> getImplementors() { return implementors; } + @Override + public Class getBindableJavaType() { + return polymorphicJavaType.getJavaTypeClass(); + } + @Override public String getName() { return polymorphicJavaType.getTypeName(); @@ -153,7 +158,7 @@ public BindableType getBindableType() { } @Override - public Class getBindableJavaType() { + public Class getJavaType() { return polymorphicJavaType.getJavaTypeClass(); } @@ -162,11 +167,6 @@ public PersistenceType getPersistenceType() { return PersistenceType.ENTITY; } - @Override - public Class getJavaType() { - return getBindableJavaType(); - } - @Override public JavaType getExpressibleJavaType() { return polymorphicJavaType; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/NullSqmExpressible.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/NullSqmExpressible.java index 9f3d9ee7171b..45964c910194 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/NullSqmExpressible.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/NullSqmExpressible.java @@ -23,7 +23,7 @@ public PersistenceType getPersistenceType() { } @Override - public Class getBindableJavaType() { + public Class getJavaType() { return null; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEnumLiteral.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEnumLiteral.java index 0c00aecfa6ba..1a713380fd7b 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEnumLiteral.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEnumLiteral.java @@ -72,11 +72,6 @@ public PersistenceType getPersistenceType() { return PersistenceType.BASIC; } - @Override - public Class getJavaType() { - return getBindableJavaType(); - } - @Override public SqmDomainType getSqmType() { return null; @@ -92,7 +87,7 @@ public EnumJavaType getExpressibleJavaType() { } @Override - public Class getBindableJavaType() { + public Class getJavaType() { return getJavaTypeDescriptor().getJavaTypeClass(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java index ccc883aec167..750f439b0335 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java @@ -72,11 +72,6 @@ public PersistenceType getPersistenceType() { return PersistenceType.BASIC; } - @Override - public Class getJavaType() { - return getBindableJavaType(); - } - private static T extractValue(Field field) { try { //noinspection unchecked @@ -140,7 +135,7 @@ public JavaType getJavaTypeDescriptor() { } @Override - public Class getBindableJavaType() { + public Class getJavaType() { return getJavaTypeDescriptor().getJavaTypeClass(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/ValueBindJpaCriteriaParameter.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/ValueBindJpaCriteriaParameter.java index ffa3be729f16..ab4e27d4d44e 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/ValueBindJpaCriteriaParameter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/ValueBindJpaCriteriaParameter.java @@ -22,9 +22,9 @@ public ValueBindJpaCriteriaParameter(BindableType type, T value, Node super( null, type, false, nodeBuilder ); assert value == null || type == null || ( type instanceof SqmBindable bindable - // TODO: why does SqmExpressible.getBindableJavaType() return an apparently-wrong type? + // TODO: why does SqmExpressible.getJavaType() return an apparently-wrong type? ? bindable.getExpressibleJavaType().isInstance( value ) - : type.getBindableJavaType().isInstance( value ) ); + : type.getJavaType().isInstance( value ) ); this.value = value; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiation.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiation.java index 941559257716..181f9048d751 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiation.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiation.java @@ -331,7 +331,7 @@ public JavaType getExpressibleJavaType() { } // @Override -// public Class getBindableJavaType() { +// public Class getJavaType() { // return getTargetTypeDescriptor().getJavaTypeClass(); // } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmJpaCompoundSelection.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmJpaCompoundSelection.java index 2066a51d02b6..1af99f28d5ca 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmJpaCompoundSelection.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmJpaCompoundSelection.java @@ -91,7 +91,7 @@ public Class getJavaType() { } // @Override -// public Class getBindableJavaType() { +// public Class getJavaType() { // return getJavaType(); // } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleSimpleSqmPathSource.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleSimpleSqmPathSource.java index afeb9e24b3aa..ec89954d6367 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleSimpleSqmPathSource.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleSimpleSqmPathSource.java @@ -32,7 +32,7 @@ public AnonymousTupleSimpleSqmPathSource( @Override public Class getBindableJavaType() { - return domainType.getBindableJavaType(); + return domainType.getJavaType(); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleSqmAssociationPathSource.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleSqmAssociationPathSource.java index 4d654001deee..f932f247f264 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleSqmAssociationPathSource.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleSqmAssociationPathSource.java @@ -56,6 +56,16 @@ public SqmJoin createSqmJoin( ); } + @Override + public Class getBindableJavaType() { + return getExpressibleJavaType().getJavaTypeClass(); + } + + @Override + public Class getJavaType() { + return getExpressibleJavaType().getJavaTypeClass(); + } + @Override public SqmDomainType getPathType() { return (SqmDomainType) domainType; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleSqmAssociationPathSourceNew.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleSqmAssociationPathSourceNew.java index aa1df4bedca7..7c44bec4a172 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleSqmAssociationPathSourceNew.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleSqmAssociationPathSourceNew.java @@ -56,6 +56,16 @@ public SqmJoin createSqmJoin( ); } + @Override + public Class getBindableJavaType() { + return domainType.getJavaType(); + } + + @Override + public Class getJavaType() { + return domainType.getJavaType(); + } + @Override public SimpleDomainType getType() { return domainType; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java index 3e4c76e72574..6b3062f54e71 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java @@ -270,13 +270,12 @@ public SqmPath createSqmPath(SqmPath lhs, SqmPathSource intermediatePat @Override public Class getBindableJavaType() { - //noinspection unchecked - return (Class) javaTypeDescriptor.getJavaType(); + return javaTypeDescriptor.getJavaTypeClass(); } @Override public Class getJavaType() { - return SqmDomainType.super.getJavaType(); + return javaTypeDescriptor.getJavaTypeClass(); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/type/AbstractStandardBasicType.java b/hibernate-core/src/main/java/org/hibernate/type/AbstractStandardBasicType.java index 201ed51ca20f..5e967b29f6a5 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/AbstractStandardBasicType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/AbstractStandardBasicType.java @@ -86,7 +86,7 @@ public JdbcLiteralFormatter getJdbcLiteralFormatter() { @Override public Class getJavaType() { - return getExpressibleJavaType().getJavaTypeClass(); + return BasicType.super.getJavaType(); } public T fromString(CharSequence string) { diff --git a/hibernate-core/src/main/java/org/hibernate/type/BasicType.java b/hibernate-core/src/main/java/org/hibernate/type/BasicType.java index 97bc10be319c..1d562e78f497 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/BasicType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/BasicType.java @@ -35,8 +35,8 @@ public interface BasicType String[] getRegistrationKeys(); @Override - default Class getBindableJavaType() { - return BasicDomainType.super.getBindableJavaType(); + default Class getJavaType() { + return BasicDomainType.super.getJavaType(); } @Override @@ -44,11 +44,6 @@ default MappingType getMappedType() { return this; } - @Override - default Class getJavaType() { - return BasicDomainType.super.getJavaType(); - } - @Override default JavaType getJavaTypeDescriptor() { return this.getMappedJavaType(); diff --git a/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java b/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java index 7309bbe32740..9c86303c437b 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java +++ b/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java @@ -54,7 +54,7 @@ public String getName() { } @Override - public Class getBindableJavaType() { + public Class getJavaType() { return javaType; } diff --git a/hibernate-core/src/main/java/org/hibernate/type/BasicTypeRegistry.java b/hibernate-core/src/main/java/org/hibernate/type/BasicTypeRegistry.java index 5157275ef6c6..24a8767ec37d 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/BasicTypeRegistry.java +++ b/hibernate-core/src/main/java/org/hibernate/type/BasicTypeRegistry.java @@ -80,7 +80,7 @@ else if ( !name.equals( typeReference.getName() ) ) { private BasicType createBasicType(String name, BasicTypeReference typeReference) { final JavaType javaType = typeConfiguration.getJavaTypeRegistry() - .getDescriptor( typeReference.getBindableJavaType() ); + .getDescriptor( typeReference.getJavaType() ); final JdbcType jdbcType = typeConfiguration.getJdbcTypeRegistry() .getDescriptor( typeReference.getSqlTypeCode() ); diff --git a/hibernate-core/src/main/java/org/hibernate/type/BindableType.java b/hibernate-core/src/main/java/org/hibernate/type/BindableType.java index 228b86834112..37bd918e8474 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/BindableType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/BindableType.java @@ -8,7 +8,6 @@ import org.hibernate.Incubating; import org.hibernate.query.sqm.SqmBindable; -import org.hibernate.query.sqm.SqmExpressible; /** * Represents a type of argument which can be bound to a positional or named @@ -32,17 +31,7 @@ @Incubating public interface BindableType extends Type { /** - * Resolve this parameter type to the corresponding {@link SqmExpressible}. + * Resolve this parameter type to the corresponding {@link SqmBindable}. */ SqmBindable resolveExpressible(BindingContext bindingContext); - - /** - * The expected Java type of the argument to the query parameter. - */ - Class getBindableJavaType(); - - @Override - default Class getJavaType() { - return getBindableJavaType(); - } } diff --git a/hibernate-core/src/main/java/org/hibernate/type/ComponentType.java b/hibernate-core/src/main/java/org/hibernate/type/ComponentType.java index a3ec2323da4f..db96ec1ed629 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/ComponentType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/ComponentType.java @@ -837,7 +837,7 @@ public boolean hasNullProperty() { } @Override - public Class getBindableJavaType() { + public Class getJavaType() { return getReturnedClass(); } diff --git a/hibernate-core/src/main/java/org/hibernate/type/internal/BindingTypeHelper.java b/hibernate-core/src/main/java/org/hibernate/type/internal/BindingTypeHelper.java index 41696b4323a2..fe2ea4c87a76 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/internal/BindingTypeHelper.java +++ b/hibernate-core/src/main/java/org/hibernate/type/internal/BindingTypeHelper.java @@ -112,7 +112,7 @@ public BindableType resolveTimestampTemporalTypeVariant( Class javaType, BindableType baseType, TypeConfiguration typeConfiguration) { - if ( baseType.getBindableJavaType().isAssignableFrom( javaType ) ) { + if ( baseType.getJavaType().isAssignableFrom( javaType ) ) { return baseType; } @@ -147,7 +147,7 @@ public BindableType resolveDateTemporalTypeVariant( Class javaType, BindableType baseType, TypeConfiguration typeConfiguration) { - if ( baseType.getBindableJavaType().isAssignableFrom( javaType ) ) { + if ( baseType.getJavaType().isAssignableFrom( javaType ) ) { return baseType; } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/boot/database/qualfiedTableNaming/DefaultCatalogAndSchemaTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/boot/database/qualfiedTableNaming/DefaultCatalogAndSchemaTest.java index 51d780b673d4..1f5631088762 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/boot/database/qualfiedTableNaming/DefaultCatalogAndSchemaTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/boot/database/qualfiedTableNaming/DefaultCatalogAndSchemaTest.java @@ -400,7 +400,7 @@ private void verifyEntityPersisterQualifiers(Class entityClass, ExpectedQuali .orElseThrow( () -> new IllegalStateException( "Cannot find persister for " + entityClass ) ); String jpaEntityName = sessionFactory.getJpaMetamodel().getEntities() .stream() - .filter( p -> p.getBindableJavaType().equals( entityClass ) ) + .filter( p -> p.getJavaType().equals( entityClass ) ) .findFirst() .orElseThrow( () -> new IllegalStateException( "Cannot find entity metamodel for " + entityClass ) ) .getName(); diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/metadata/MetadataTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/metadata/MetadataTest.java index d33aa561775d..826ca6c0e8ea 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/metadata/MetadataTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/metadata/MetadataTest.java @@ -4,7 +4,9 @@ */ package org.hibernate.orm.test.jpa.metadata; +import java.util.List; import java.util.Locale; +import java.util.Map; import java.util.Set; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.metamodel.Attribute; @@ -118,16 +120,17 @@ public void testLogicalManyToOne(EntityManagerFactoryScope scope) { JoinedManyToOneOwner.class); final SingularAttribute attr = entityType.getDeclaredSingularAttribute("house"); assertEquals(Attribute.PersistentAttributeType.MANY_TO_ONE, attr.getPersistentAttributeType()); + assertEquals(House.class, attr.getJavaType()); assertEquals(House.class, attr.getBindableJavaType()); final EntityType houseType = scope.getEntityManagerFactory().getMetamodel().entity(House.class); - assertEquals(houseType.getBindableJavaType(), attr.getBindableJavaType()); + assertEquals(houseType.getJavaType(), attr.getJavaType()); assertFalse(entityType.getDeclaredSingularAttribute("house2").isOptional()); } @Test public void testEntity(EntityManagerFactoryScope scope) { final EntityType fridgeType = scope.getEntityManagerFactory().getMetamodel().entity(Fridge.class); - assertEquals(Fridge.class, fridgeType.getBindableJavaType()); + assertEquals(Fridge.class, fridgeType.getJavaType()); assertEquals(Bindable.BindableType.ENTITY_TYPE, fridgeType.getBindableType()); SingularAttribute wrapped = fridgeType.getDeclaredSingularAttribute( "temperature", @@ -226,7 +229,7 @@ public void testBasic(EntityManagerFactoryScope scope) { "temperature", Integer.class ); - assertEquals( int.class, singularAttribute.getBindableJavaType() ); + assertEquals( int.class, singularAttribute.getJavaType() ); assertEquals( int.class, singularAttribute.getType().getJavaType() ); assertEquals(Bindable.BindableType.SINGULAR_ATTRIBUTE, singularAttribute.getBindableType()); assertFalse(singularAttribute.isId()); @@ -316,11 +319,15 @@ public void testElementCollection(EntityManagerFactoryScope scope) { assertEquals(String.class, roomsByName.getKeyJavaType()); assertEquals(Type.PersistenceType.BASIC, roomsByName.getKeyType().getPersistenceType()); assertEquals(PluralAttribute.CollectionType.MAP, roomsByName.getCollectionType()); + assertEquals(Map.class, roomsByName.getJavaType()); + assertEquals(Room.class, roomsByName.getBindableJavaType()); final ListAttribute roomsBySize = entityType.getDeclaredList("roomsBySize", Room.class); assertNotNull(roomsBySize); assertEquals(Type.PersistenceType.EMBEDDABLE, roomsBySize.getElementType().getPersistenceType()); assertEquals(PluralAttribute.CollectionType.LIST, roomsBySize.getCollectionType()); + assertEquals( Room.class, roomsBySize.getBindableJavaType() ); + assertEquals( List.class, roomsBySize.getJavaType() ); } @Test diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/metadata/StaticMetadataTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/metadata/StaticMetadataTest.java index 29e7b4dc7cb4..ba70039ee9b2 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/metadata/StaticMetadataTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/metadata/StaticMetadataTest.java @@ -80,7 +80,7 @@ public void testInjections(EntityManagerFactoryScope scope) { assertEquals( "temperature", Fridge_.temperature.getName() ); assertEquals( Fridge.class, Fridge_.temperature.getDeclaringType().getJavaType() ); assertEquals( int.class, Fridge_.temperature.getJavaType() ); - assertEquals( int.class, Fridge_.temperature.getBindableJavaType() ); + assertEquals( int.class, Fridge_.temperature.getJavaType() ); assertEquals( int.class, Fridge_.temperature.getType().getJavaType() ); assertEquals( Bindable.BindableType.SINGULAR_ATTRIBUTE, Fridge_.temperature.getBindableType() ); assertEquals( Type.PersistenceType.BASIC, Fridge_.temperature.getType().getPersistenceType() ); @@ -104,6 +104,7 @@ public void testInjections(EntityManagerFactoryScope scope) { assertTrue( House_.rooms.isCollection() ); assertEquals( Attribute.PersistentAttributeType.ELEMENT_COLLECTION, House_.rooms.getPersistentAttributeType() ); assertEquals( Room.class, House_.rooms.getBindableJavaType() ); + assertEquals( Set.class, House_.rooms.getJavaType() ); assertEquals( Bindable.BindableType.PLURAL_ATTRIBUTE, House_.rooms.getBindableType() ); assertEquals( Set.class, House_.rooms.getJavaType() ); assertEquals( PluralAttribute.CollectionType.SET, House_.rooms.getCollectionType() ); diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/metamodel/EmbeddedTypeTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/metamodel/EmbeddedTypeTest.java index 9271f1e4a23a..7c178a5e8ccc 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/metamodel/EmbeddedTypeTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/metamodel/EmbeddedTypeTest.java @@ -44,7 +44,7 @@ public void testSingularAttributeAccessByName(EntityManagerFactoryScope scope) { entityManager -> { SingularAttribute soldDate_ = entityManager.getMetamodel().embeddable( ShelfLife.class ) .getSingularAttribute( "soldDate" ); - assertEquals( Date.class, soldDate_.getBindableJavaType() ); + assertEquals( Date.class, soldDate_.getJavaType() ); assertEquals( Date.class, soldDate_.getType().getJavaType() ); assertEquals( Date.class, soldDate_.getJavaType() ); } From 18588c0fab0b7cd36f5e39f0074703fb53b042d7 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Mon, 12 May 2025 11:35:13 +0200 Subject: [PATCH 8/9] HHH-19449 consistently use static imports --- .../hibernate/metamodel/model/domain/BasicDomainType.java | 4 +++- .../internal/AbstractDiscriminatorSqmPathSource.java | 3 ++- .../domain/internal/AnyDiscriminatorSqmPathSource.java | 4 +++- .../model/domain/internal/AnyMappingDomainTypeImpl.java | 3 ++- .../metamodel/model/domain/internal/ArrayTupleType.java | 4 +++- .../model/domain/internal/BasicSqmPathSource.java | 4 +++- .../model/domain/internal/EmbeddableTypeImpl.java | 7 +++++-- .../metamodel/model/domain/internal/EntityTypeImpl.java | 6 ++++-- .../model/domain/internal/MappedSuperclassTypeImpl.java | 7 +++++-- .../query/sqm/internal/SqmCriteriaNodeBuilder.java | 3 ++- .../query/sqm/tree/domain/SqmBasicValuedSimplePath.java | 3 ++- .../sqm/tree/domain/SqmEmbeddedValuedSimplePath.java | 4 +++- .../query/sqm/tree/domain/SqmMapEntryReference.java | 4 +++- .../sqm/tree/domain/SqmPolymorphicRootDescriptor.java | 6 ++++-- .../query/sqm/tree/expression/NullSqmExpressible.java | 4 +++- .../query/sqm/tree/expression/SqmEnumLiteral.java | 4 +++- .../query/sqm/tree/expression/SqmFieldLiteral.java | 5 +++-- .../query/sqm/tuple/internal/AnonymousTupleType.java | 8 ++++++-- .../main/java/org/hibernate/type/BasicTypeReference.java | 4 +++- .../src/main/java/org/hibernate/type/ComponentType.java | 3 ++- 20 files changed, 64 insertions(+), 26 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/BasicDomainType.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/BasicDomainType.java index 3db8f6e1a2f7..52476b18134d 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/BasicDomainType.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/BasicDomainType.java @@ -8,6 +8,8 @@ import org.hibernate.type.OutputableType; +import static jakarta.persistence.metamodel.Type.PersistenceType.BASIC; + /** * Hibernate extension to the JPA {@link BasicType} contract. * @@ -17,7 +19,7 @@ public interface BasicDomainType extends ReturnableType, BasicType, OutputableType { @Override default PersistenceType getPersistenceType() { - return PersistenceType.BASIC; + return BASIC; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AbstractDiscriminatorSqmPathSource.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AbstractDiscriminatorSqmPathSource.java index d702490728e2..d44c02d7b3fd 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AbstractDiscriminatorSqmPathSource.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AbstractDiscriminatorSqmPathSource.java @@ -10,6 +10,7 @@ import org.hibernate.query.sqm.tree.domain.SqmDomainType; import static jakarta.persistence.metamodel.Bindable.BindableType.SINGULAR_ATTRIBUTE; +import static jakarta.persistence.metamodel.Type.PersistenceType.BASIC; import static org.hibernate.metamodel.mapping.EntityDiscriminatorMapping.DISCRIMINATOR_ROLE_NAME; /** @@ -30,7 +31,7 @@ public SqmPathSource findSubPathSource(String name) { @Override public PersistenceType getPersistenceType() { - return PersistenceType.BASIC; + return BASIC; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPathSource.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPathSource.java index 702d8443f002..aabb305941d6 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPathSource.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPathSource.java @@ -14,6 +14,8 @@ import org.hibernate.type.BasicType; import org.hibernate.type.descriptor.java.JavaType; +import static jakarta.persistence.metamodel.Type.PersistenceType.BASIC; + /** * {@link SqmPathSource} implementation for {@link AnyDiscriminator} * @@ -48,7 +50,7 @@ public SqmPathSource findSubPathSource(String name) { @Override public PersistenceType getPersistenceType() { - return PersistenceType.BASIC; + return BASIC; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyMappingDomainTypeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyMappingDomainTypeImpl.java index 0edfdf9a941a..ce51f8a98b36 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyMappingDomainTypeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyMappingDomainTypeImpl.java @@ -19,6 +19,7 @@ import java.util.List; +import static jakarta.persistence.metamodel.Type.PersistenceType.ENTITY; import static org.hibernate.metamodel.mapping.internal.AnyDiscriminatorPart.determineDiscriminatorConverter; /** @@ -92,7 +93,7 @@ private NavigableRole resolveNavigableRole(Any bootAnyMapping) { @Override public PersistenceType getPersistenceType() { - return PersistenceType.ENTITY; + return ENTITY; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java index 250ac4057632..3824326aebfc 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java @@ -20,6 +20,8 @@ import org.hibernate.type.descriptor.java.JavaType; import org.hibernate.type.descriptor.java.ObjectArrayJavaType; +import static jakarta.persistence.metamodel.Type.PersistenceType.EMBEDDABLE; + /** * @author Christian Beikov */ @@ -89,7 +91,7 @@ public JavaType getExpressibleJavaType() { @Override public PersistenceType getPersistenceType() { - return PersistenceType.EMBEDDABLE; + return EMBEDDABLE; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicSqmPathSource.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicSqmPathSource.java index 7ad0a116a93c..1a37351000e7 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicSqmPathSource.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicSqmPathSource.java @@ -12,6 +12,8 @@ import org.hibernate.query.sqm.tree.domain.SqmPath; import org.hibernate.type.descriptor.java.JavaType; +import static jakarta.persistence.metamodel.Type.PersistenceType.BASIC; + /** * @author Steve Ebersole */ @@ -62,7 +64,7 @@ public SqmPath createSqmPath(SqmPath lhs, SqmPathSource intermediatePat @Override public PersistenceType getPersistenceType() { - return PersistenceType.BASIC; + return BASIC; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddableTypeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddableTypeImpl.java index db3114c148df..bd59fb86ddf3 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddableTypeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddableTypeImpl.java @@ -18,6 +18,9 @@ import org.hibernate.query.sqm.tree.domain.SqmEmbeddableDomainType; import org.hibernate.type.descriptor.java.JavaType; +import static jakarta.persistence.metamodel.Bindable.BindableType.SINGULAR_ATTRIBUTE; +import static jakarta.persistence.metamodel.Type.PersistenceType.EMBEDDABLE; + /** * Implementation of {@link jakarta.persistence.metamodel.EmbeddableType}. * @@ -50,7 +53,7 @@ public Class getBindableJavaType() { @Override public PersistenceType getPersistenceType() { - return PersistenceType.EMBEDDABLE; + return EMBEDDABLE; } @Override @@ -109,6 +112,6 @@ public SqmPath createSqmPath(SqmPath lhs, SqmPathSource intermediatePat @Override public BindableType getBindableType() { - return BindableType.SINGULAR_ATTRIBUTE; + return SINGULAR_ATTRIBUTE; } } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EntityTypeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EntityTypeImpl.java index 8640ed6ee181..b7d8b00c8961 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EntityTypeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EntityTypeImpl.java @@ -31,6 +31,8 @@ import org.hibernate.query.sqm.tree.domain.SqmEntityDomainType; import org.hibernate.type.descriptor.java.JavaType; +import static jakarta.persistence.metamodel.Bindable.BindableType.ENTITY_TYPE; +import static jakarta.persistence.metamodel.Type.PersistenceType.ENTITY; import static org.hibernate.metamodel.model.domain.internal.DomainModelHelper.isCompatible; /** @@ -237,12 +239,12 @@ else if ( EntityIdentifierMapping.matchesRoleName( name ) ) { @Override public BindableType getBindableType() { - return BindableType.ENTITY_TYPE; + return ENTITY_TYPE; } @Override public PersistenceType getPersistenceType() { - return PersistenceType.ENTITY; + return ENTITY; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/MappedSuperclassTypeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/MappedSuperclassTypeImpl.java index 4aa17f3e381f..d78469aeba36 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/MappedSuperclassTypeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/MappedSuperclassTypeImpl.java @@ -16,6 +16,9 @@ import org.hibernate.query.sqm.tree.domain.SqmPersistentAttribute; import org.hibernate.type.descriptor.java.JavaType; +import static jakarta.persistence.metamodel.Bindable.BindableType.ENTITY_TYPE; +import static jakarta.persistence.metamodel.Type.PersistenceType.MAPPED_SUPERCLASS; + /** * Implementation of {@link jakarta.persistence.metamodel.MappedSuperclassType}. * @@ -117,12 +120,12 @@ else if ( EntityIdentifierMapping.matchesRoleName( name ) ) { @Override public BindableType getBindableType() { - return BindableType.ENTITY_TYPE; + return ENTITY_TYPE; } @Override public PersistenceType getPersistenceType() { - return PersistenceType.MAPPED_SUPERCLASS; + return MAPPED_SUPERCLASS; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java index 7b9357e13fcd..09d3833d6991 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java @@ -167,6 +167,7 @@ import jakarta.persistence.metamodel.Bindable; import org.checkerframework.checker.nullness.qual.Nullable; +import static jakarta.persistence.metamodel.Type.PersistenceType.BASIC; import static java.util.Arrays.asList; import static org.hibernate.internal.util.collections.CollectionHelper.determineProperSizing; import static org.hibernate.query.internal.QueryHelper.highestPrecedenceType; @@ -1655,7 +1656,7 @@ public MultiValueParameterType(Class type) { @Override public PersistenceType getPersistenceType() { - return PersistenceType.BASIC; + return BASIC; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java index 46e592f0ca93..8a00493084ee 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java @@ -25,6 +25,7 @@ import org.hibernate.type.descriptor.java.BasicJavaType; import org.hibernate.type.descriptor.java.JavaType; +import static jakarta.persistence.metamodel.Type.PersistenceType.BASIC; import static java.util.Arrays.asList; /** @@ -79,7 +80,7 @@ public SqmBindable getExpressible() { @Override public PersistenceType getPersistenceType() { - return PersistenceType.BASIC; + return BASIC; } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddedValuedSimplePath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddedValuedSimplePath.java index 80c269fd6726..fb0a53dba585 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddedValuedSimplePath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddedValuedSimplePath.java @@ -17,6 +17,8 @@ import org.hibernate.spi.NavigablePath; import org.hibernate.type.descriptor.java.JavaType; +import static jakarta.persistence.metamodel.Type.PersistenceType.EMBEDDABLE; + /** * @author Steve Ebersole */ @@ -73,7 +75,7 @@ public SqmBindable getExpressible() { @Override public PersistenceType getPersistenceType() { - return PersistenceType.EMBEDDABLE; + return EMBEDDABLE; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmMapEntryReference.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmMapEntryReference.java index 126b9337157f..0b4127390508 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmMapEntryReference.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmMapEntryReference.java @@ -22,6 +22,8 @@ import jakarta.persistence.criteria.Expression; import jakarta.persistence.criteria.Predicate; +import static jakarta.persistence.metamodel.Type.PersistenceType.EMBEDDABLE; + /** * Represents the reference to a Map attribute's {@link Map.Entry} entries @@ -86,7 +88,7 @@ public JpaSelection> alias(String name) { @Override public PersistenceType getPersistenceType() { - return PersistenceType.EMBEDDABLE; + return EMBEDDABLE; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmPolymorphicRootDescriptor.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmPolymorphicRootDescriptor.java index 8dc6b8482fec..e1bf3d77f053 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmPolymorphicRootDescriptor.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmPolymorphicRootDescriptor.java @@ -34,6 +34,8 @@ import java.util.TreeSet; import java.util.function.Consumer; +import static jakarta.persistence.metamodel.Bindable.BindableType.ENTITY_TYPE; +import static jakarta.persistence.metamodel.Type.PersistenceType.ENTITY; import static java.util.Collections.unmodifiableMap; import static java.util.Comparator.comparing; @@ -154,7 +156,7 @@ public SqmDomainType getPathType() { @Override public BindableType getBindableType() { - return BindableType.ENTITY_TYPE; + return ENTITY_TYPE; } @Override @@ -164,7 +166,7 @@ public Class getJavaType() { @Override public PersistenceType getPersistenceType() { - return PersistenceType.ENTITY; + return ENTITY; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/NullSqmExpressible.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/NullSqmExpressible.java index 45964c910194..3c52cac41a9e 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/NullSqmExpressible.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/NullSqmExpressible.java @@ -8,6 +8,8 @@ import org.hibernate.query.sqm.tree.domain.SqmDomainType; import org.hibernate.type.descriptor.java.JavaType; +import static jakarta.persistence.metamodel.Type.PersistenceType.BASIC; + /** * @author Steve Ebersole */ @@ -19,7 +21,7 @@ public class NullSqmExpressible implements SqmBindable { @Override public PersistenceType getPersistenceType() { - return PersistenceType.BASIC; + return BASIC; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEnumLiteral.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEnumLiteral.java index 1a713380fd7b..8ef14ed5d30f 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEnumLiteral.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEnumLiteral.java @@ -20,6 +20,8 @@ import org.hibernate.query.sqm.tree.domain.SqmDomainType; import org.hibernate.type.descriptor.java.EnumJavaType; +import static jakarta.persistence.metamodel.Type.PersistenceType.BASIC; + /** * Specialized SQM literal defined by an enum reference. E.g. * {@code ".. where p.sex = Sex.MALE"} @@ -69,7 +71,7 @@ public SqmBindable getExpressible() { @Override public PersistenceType getPersistenceType() { - return PersistenceType.BASIC; + return BASIC; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java index 750f439b0335..ba426a9f88e2 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java @@ -30,6 +30,8 @@ import jakarta.persistence.criteria.Expression; import org.checkerframework.checker.nullness.qual.Nullable; +import static jakarta.persistence.metamodel.Type.PersistenceType.BASIC; + /** * @author Steve Ebersole */ @@ -63,13 +65,12 @@ public SqmFieldLiteral( this.fieldJavaType = fieldJavaType; this.fieldName = fieldName; this.nodeBuilder = nodeBuilder; - this.expressible = this; } @Override public PersistenceType getPersistenceType() { - return PersistenceType.BASIC; + return BASIC; } private static T extractValue(Field field) { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java index 6b3062f54e71..1be741a5aa6e 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java @@ -37,6 +37,8 @@ import org.checkerframework.checker.nullness.qual.Nullable; +import static jakarta.persistence.metamodel.Bindable.BindableType.ENTITY_TYPE; +import static jakarta.persistence.metamodel.Type.PersistenceType.ENTITY; import static org.hibernate.internal.util.collections.CollectionHelper.linkedMapOfSize; @@ -238,12 +240,14 @@ public JavaType getExpressibleJavaType() { @Override public BindableType getBindableType() { - return BindableType.ENTITY_TYPE; + // TODO: should this be SINGULAR_ATTRIBUTE + return ENTITY_TYPE; } @Override public PersistenceType getPersistenceType() { - return PersistenceType.ENTITY; + // TODO: should this be EMBEDDABLE + return ENTITY; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java b/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java index 9c86303c437b..25bbd0ec6843 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java +++ b/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java @@ -9,6 +9,8 @@ import org.hibernate.query.sqm.SqmBindable; import org.hibernate.type.descriptor.converter.spi.BasicValueConverter; +import static jakarta.persistence.metamodel.Type.PersistenceType.BASIC; + /** * A basic type reference. * @@ -60,7 +62,7 @@ public Class getJavaType() { @Override public PersistenceType getPersistenceType() { - return PersistenceType.BASIC; + return BASIC; } public int getSqlTypeCode() { diff --git a/hibernate-core/src/main/java/org/hibernate/type/ComponentType.java b/hibernate-core/src/main/java/org/hibernate/type/ComponentType.java index db96ec1ed629..62c6a4c33acf 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/ComponentType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/ComponentType.java @@ -39,6 +39,7 @@ import org.hibernate.type.descriptor.jdbc.JdbcType; import org.hibernate.type.spi.CompositeTypeImplementor; +import static jakarta.persistence.metamodel.Type.PersistenceType.EMBEDDABLE; import static org.hibernate.internal.util.ReflectHelper.isRecord; import static org.hibernate.internal.util.StringHelper.unqualify; import static org.hibernate.metamodel.mapping.EntityDiscriminatorMapping.DISCRIMINATOR_ROLE_NAME; @@ -157,7 +158,7 @@ public final boolean isComponentType() { @Override public PersistenceType getPersistenceType() { - return PersistenceType.EMBEDDABLE; + return EMBEDDABLE; } public Class getReturnedClass() { From 797fb728ce77f826ad000dc872264b8c64d359f0 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Mon, 12 May 2025 11:39:21 +0200 Subject: [PATCH 9/9] HHH-19449 rename to SqmBindableType for consistency and to reduce possible confusion with JPA Bindable --- ...eriesSetReturningFunctionTypeResolver.java | 4 +-- ...nnestSetReturningFunctionTypeResolver.java | 14 +++++----- .../array/ArrayConstructorFunction.java | 6 ++--- .../AnyDiscriminatorSqmPathSource.java | 4 +-- .../model/domain/internal/ArrayTupleType.java | 10 +++---- .../internal/SingularAttributeImpl.java | 4 +-- .../persister/entity/DiscriminatorHelper.java | 8 +++--- .../procedure/internal/ProcedureCallImpl.java | 8 +++--- .../FullyQualifiedReflectivePathTerminal.java | 8 +++--- .../hql/internal/SemanticQueryBuilder.java | 6 ++--- .../hibernate/query/internal/QueryHelper.java | 10 +++---- .../spi/QueryParameterBindingValidator.java | 4 +-- ...{SqmBindable.java => SqmBindableType.java} | 4 +-- .../hibernate/query/sqm/SqmPathSource.java | 2 +- .../function/SelfRenderingSqmFunction.java | 6 ++--- .../sqm/internal/SqmCriteriaNodeBuilder.java | 18 ++++++------- .../hibernate/query/sqm/internal/SqmUtil.java | 4 +-- .../query/sqm/internal/TypecheckUtil.java | 26 +++++++++---------- .../SelectableMappingExpressionConverter.java | 4 +-- ...tReturningFunctionTypeResolverBuilder.java | 12 ++++----- .../sqm/tree/SqmExpressibleAccessor.java | 4 +-- .../query/sqm/tree/SqmTypedNode.java | 6 ++--- .../query/sqm/tree/cte/SqmCteTable.java | 6 ++--- .../query/sqm/tree/cte/SqmCteTableColumn.java | 6 ++--- .../sqm/tree/domain/AbstractSqmPath.java | 6 ++--- .../tree/domain/AbstractSqmSimplePath.java | 4 +-- .../tree/domain/SqmBasicValuedSimplePath.java | 6 ++--- .../query/sqm/tree/domain/SqmDomainType.java | 6 ++--- .../domain/SqmElementAggregateFunction.java | 4 +-- .../domain/SqmEmbeddedValuedSimplePath.java | 6 ++--- .../domain/SqmEntityValuedSimplePath.java | 4 +-- .../sqm/tree/domain/SqmFunctionPath.java | 4 +-- .../domain/SqmIndexAggregateFunction.java | 4 +-- .../sqm/tree/domain/SqmMapEntryReference.java | 6 ++--- .../query/sqm/tree/domain/SqmPath.java | 6 ++--- .../sqm/tree/domain/SqmSingularJoin.java | 4 +-- .../sqm/tree/domain/SqmTreatedBagJoin.java | 4 +-- .../sqm/tree/domain/SqmTreatedCrossJoin.java | 4 +-- .../SqmTreatedEmbeddedValuedSimplePath.java | 4 +-- .../sqm/tree/domain/SqmTreatedEntityJoin.java | 4 +-- .../sqm/tree/domain/SqmTreatedListJoin.java | 4 +-- .../sqm/tree/domain/SqmTreatedMapJoin.java | 4 +-- .../tree/domain/SqmTreatedPluralPartJoin.java | 4 +-- .../query/sqm/tree/domain/SqmTreatedRoot.java | 4 +-- .../sqm/tree/domain/SqmTreatedSetJoin.java | 4 +-- .../sqm/tree/domain/SqmTreatedSimplePath.java | 4 +-- .../tree/domain/SqmTreatedSingularJoin.java | 4 +-- .../expression/AbstractSqmExpression.java | 8 +++--- .../tree/expression/AbstractSqmParameter.java | 8 +++--- .../expression/AsWrapperSqmExpression.java | 4 +-- .../tree/expression/JpaCriteriaParameter.java | 4 +-- .../tree/expression/NullSqmExpressible.java | 4 +-- .../tree/expression/SqmAliasedNodeRef.java | 6 ++--- .../query/sqm/tree/expression/SqmAny.java | 4 +-- .../tree/expression/SqmBinaryArithmetic.java | 8 +++--- .../query/sqm/tree/expression/SqmByUnit.java | 4 +-- .../sqm/tree/expression/SqmCaseSearched.java | 14 +++++----- .../sqm/tree/expression/SqmCaseSimple.java | 14 +++++----- .../sqm/tree/expression/SqmCastTarget.java | 4 +-- .../sqm/tree/expression/SqmCoalesce.java | 6 ++--- .../sqm/tree/expression/SqmCollation.java | 4 +-- .../tree/expression/SqmCollectionSize.java | 4 +-- .../sqm/tree/expression/SqmDistinct.java | 4 +-- .../sqm/tree/expression/SqmDurationUnit.java | 4 +-- .../sqm/tree/expression/SqmEnumLiteral.java | 6 ++--- .../query/sqm/tree/expression/SqmEvery.java | 4 +-- .../sqm/tree/expression/SqmExpression.java | 6 ++--- .../tree/expression/SqmExpressionHelper.java | 6 ++--- .../sqm/tree/expression/SqmExtractUnit.java | 4 +-- .../sqm/tree/expression/SqmFieldLiteral.java | 10 +++---- .../query/sqm/tree/expression/SqmFormat.java | 4 +-- .../sqm/tree/expression/SqmFunction.java | 4 +-- .../tree/expression/SqmJsonNullBehavior.java | 4 +-- .../SqmJsonObjectAggUniqueKeysBehavior.java | 4 +-- .../tree/expression/SqmJsonTableFunction.java | 6 ++--- .../query/sqm/tree/expression/SqmLiteral.java | 6 ++--- .../expression/SqmLiteralEmbeddableType.java | 4 +-- .../tree/expression/SqmLiteralEntityType.java | 4 +-- .../sqm/tree/expression/SqmLiteralNull.java | 6 ++--- .../SqmModifiedSubQueryExpression.java | 4 +-- .../tree/expression/SqmNamedParameter.java | 4 +-- .../query/sqm/tree/expression/SqmOver.java | 4 +-- .../SqmParameterizedEntityType.java | 4 +-- .../expression/SqmPositionalParameter.java | 4 +-- .../SqmSelfRenderingExpression.java | 4 +-- .../tree/expression/SqmTrimSpecification.java | 4 +-- .../query/sqm/tree/expression/SqmTuple.java | 6 ++--- .../tree/expression/SqmUnaryOperation.java | 4 +-- .../SqmXmlAttributesExpression.java | 4 +-- .../tree/expression/SqmXmlTableFunction.java | 6 ++--- .../ValueBindJpaCriteriaParameter.java | 4 +-- .../sqm/tree/jpa/AbstractJpaSelection.java | 4 +-- .../sqm/tree/jpa/AbstractJpaTupleElement.java | 12 ++++----- .../sqm/tree/jpa/ParameterCollector.java | 8 +++--- .../AbstractNegatableSqmPredicate.java | 4 +-- .../tree/predicate/AbstractSqmPredicate.java | 4 +-- .../tree/predicate/SqmBetweenPredicate.java | 4 +-- .../predicate/SqmComparisonPredicate.java | 4 +-- .../predicate/SqmInSubQueryPredicate.java | 4 +-- .../tree/predicate/SqmJunctionPredicate.java | 4 +-- .../sqm/tree/predicate/SqmLikePredicate.java | 4 +-- .../tree/predicate/SqmMemberOfPredicate.java | 4 +-- .../query/sqm/tree/select/SqmAliasedNode.java | 6 ++--- .../tree/select/SqmDynamicInstantiation.java | 4 +-- .../query/sqm/tree/select/SqmSubQuery.java | 12 ++++----- .../hibernate/query/sqm/tuple/TupleType.java | 6 ++--- .../tuple/internal/AnonymousTupleType.java | 12 ++++----- .../hibernate/type/BasicTypeReference.java | 4 +-- .../java/org/hibernate/type/BindableType.java | 6 ++--- .../org/hibernate/type/BindingContext.java | 10 +++---- .../hibernate/type/spi/TypeConfiguration.java | 12 ++++----- 111 files changed, 325 insertions(+), 325 deletions(-) rename hibernate-core/src/main/java/org/hibernate/query/sqm/{SqmBindable.java => SqmBindableType.java} (70%) diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/GenerateSeriesSetReturningFunctionTypeResolver.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/GenerateSeriesSetReturningFunctionTypeResolver.java index e168d6944c20..3c6cc28e4a58 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/GenerateSeriesSetReturningFunctionTypeResolver.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/GenerateSeriesSetReturningFunctionTypeResolver.java @@ -13,7 +13,7 @@ import org.hibernate.metamodel.mapping.SelectablePath; import org.hibernate.metamodel.mapping.SqlTypedMapping; import org.hibernate.metamodel.mapping.internal.SelectableMappingImpl; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.domain.SqmDomainType; import org.hibernate.query.sqm.tuple.internal.AnonymousTupleType; import org.hibernate.query.sqm.SqmExpressible; @@ -54,7 +54,7 @@ public AnonymousTupleType resolveTupleType(List> ar throw new IllegalArgumentException( "Couldn't determine types of arguments to function 'generate_series'" ); } - final SqmBindable[] componentTypes = new SqmBindable[]{ type, typeConfiguration.getBasicTypeForJavaType( Long.class ) }; + final SqmBindableType[] componentTypes = new SqmBindableType[]{ type, typeConfiguration.getBasicTypeForJavaType( Long.class ) }; final String[] componentNames = new String[]{ CollectionPart.Nature.ELEMENT.getName(), CollectionPart.Nature.INDEX.getName() }; return new AnonymousTupleType<>( componentTypes, componentNames ); } diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/UnnestSetReturningFunctionTypeResolver.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/UnnestSetReturningFunctionTypeResolver.java index 56f7f5af4904..d4e58fb4b3dc 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/UnnestSetReturningFunctionTypeResolver.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/UnnestSetReturningFunctionTypeResolver.java @@ -17,7 +17,7 @@ import org.hibernate.metamodel.mapping.SelectablePath; import org.hibernate.metamodel.mapping.SqlTypedMapping; import org.hibernate.metamodel.mapping.internal.SelectableMappingImpl; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tuple.internal.AnonymousTupleType; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.produce.function.SetReturningFunctionTypeResolver; @@ -56,7 +56,7 @@ public AnonymousTupleType resolveTupleType(List> ar } final BasicType elementType = pluralType.getElementType(); - final SqmBindable[] componentTypes; + final SqmBindableType[] componentTypes; final String[] componentNames; if ( elementType.getJdbcType() instanceof AggregateJdbcType aggregateJdbcType && aggregateJdbcType.getEmbeddableMappingType() != null ) { @@ -76,7 +76,7 @@ public AnonymousTupleType resolveTupleType(List> ar componentNames[index] = CollectionPart.Nature.INDEX.getName(); } else { - componentTypes = new SqmBindable[]{ elementType, typeConfiguration.getBasicTypeForJavaType( Long.class ) }; + componentTypes = new SqmBindableType[]{ elementType, typeConfiguration.getBasicTypeForJavaType( Long.class ) }; componentNames = new String[]{ CollectionPart.Nature.ELEMENT.getName(), CollectionPart.Nature.INDEX.getName() }; } return new AnonymousTupleType<>( componentTypes, componentNames ); @@ -209,17 +209,17 @@ public SelectableMapping[] resolveFunctionReturnType( return returnType; } - private static SqmBindable[] determineComponentTypes(EmbeddableMappingType embeddableMappingType) { + private static SqmBindableType[] determineComponentTypes(EmbeddableMappingType embeddableMappingType) { final int numberOfAttributeMappings = embeddableMappingType.getNumberOfAttributeMappings(); - final ArrayList> expressibles = new ArrayList<>( numberOfAttributeMappings + 1 ); + final ArrayList> expressibles = new ArrayList<>( numberOfAttributeMappings + 1 ); for ( int i = 0; i < numberOfAttributeMappings; i++ ) { final AttributeMapping attributeMapping = embeddableMappingType.getAttributeMapping( i ); final MappingType mappedType = attributeMapping.getMappedType(); - if ( mappedType instanceof SqmBindable sqmExpressible ) { + if ( mappedType instanceof SqmBindableType sqmExpressible ) { expressibles.add( sqmExpressible ); } } - return expressibles.toArray( new SqmBindable[expressibles.size() + 1] ); + return expressibles.toArray( new SqmBindableType[expressibles.size() + 1] ); } } diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayConstructorFunction.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayConstructorFunction.java index e3a465924b11..b90ae31686e4 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayConstructorFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayConstructorFunction.java @@ -9,7 +9,7 @@ import org.hibernate.metamodel.mapping.JdbcMappingContainer; import org.hibernate.metamodel.model.domain.ReturnableType; import org.hibernate.type.BindingContext; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.function.AbstractSqmSelfRenderingFunctionDescriptor; import org.hibernate.query.sqm.produce.function.ArgumentsValidator; import org.hibernate.query.sqm.produce.function.FunctionArgumentException; @@ -77,9 +77,9 @@ public void validate( String functionName, BindingContext bindingContext) { final int size = arguments.size(); - SqmBindable firstType = null; + SqmBindableType firstType = null; for ( int i = 0; i < size; i++ ) { - final SqmBindable argument = arguments.get( i ).getExpressible(); + final SqmBindableType argument = arguments.get( i ).getExpressible(); if ( firstType == null ) { firstType = argument; } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPathSource.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPathSource.java index aabb305941d6..c9e757545878 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPathSource.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPathSource.java @@ -7,7 +7,7 @@ import org.hibernate.annotations.AnyDiscriminator; import org.hibernate.metamodel.model.domain.SimpleDomainType; import org.hibernate.metamodel.model.domain.ReturnableType; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.domain.SqmPath; import org.hibernate.spi.NavigablePath; @@ -21,7 +21,7 @@ * */ public class AnyDiscriminatorSqmPathSource extends AbstractSqmPathSource - implements ReturnableType, SqmBindable { + implements ReturnableType, SqmBindableType { private final BasicType domainType; diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java index 3824326aebfc..510a25b3dd6a 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java @@ -13,7 +13,7 @@ import org.hibernate.metamodel.UnsupportedMappingException; import org.hibernate.metamodel.mapping.JdbcMapping; import org.hibernate.metamodel.mapping.MappingModelExpressible; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.domain.SqmDomainType; import org.hibernate.query.sqm.tuple.TupleType; import org.hibernate.query.sqm.SqmExpressible; @@ -29,9 +29,9 @@ public class ArrayTupleType implements TupleType, SqmDomainType, MappingModelExpressible { private final ObjectArrayJavaType javaType; - private final SqmBindable[] components; + private final SqmBindableType[] components; - public ArrayTupleType(SqmBindable[] components) { + public ArrayTupleType(SqmBindableType[] components) { this.components = components; this.javaType = new ObjectArrayJavaType( getTypeDescriptors( components ) ); } @@ -75,12 +75,12 @@ public List getComponentNames() { } @Override - public SqmBindable get(int index) { + public SqmBindableType get(int index) { return components[index]; } @Override - public SqmBindable get(String componentName) { + public SqmBindableType get(String componentName) { throw new UnsupportedMappingException( "Array tuple has no component names" ); } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/SingularAttributeImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/SingularAttributeImpl.java index ae700218b982..4b5e652d98f1 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/SingularAttributeImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/SingularAttributeImpl.java @@ -17,7 +17,7 @@ import org.hibernate.metamodel.model.domain.SimpleDomainType; import org.hibernate.query.SemanticException; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.internal.SqmMappingModelHelper; @@ -141,7 +141,7 @@ public SqmPathSource getSqmPathSource() { } @Override - public SqmBindable getExpressible() { + public SqmBindableType getExpressible() { return sqmPathSource.getExpressible(); } diff --git a/hibernate-core/src/main/java/org/hibernate/persister/entity/DiscriminatorHelper.java b/hibernate-core/src/main/java/org/hibernate/persister/entity/DiscriminatorHelper.java index e38ea7f590cf..a20b51d75e40 100644 --- a/hibernate-core/src/main/java/org/hibernate/persister/entity/DiscriminatorHelper.java +++ b/hibernate-core/src/main/java/org/hibernate/persister/entity/DiscriminatorHelper.java @@ -11,7 +11,7 @@ import org.hibernate.mapping.Component; import org.hibernate.mapping.PersistentClass; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.sql.InFragment; import org.hibernate.type.BasicType; @@ -117,13 +117,13 @@ public static String jdbcLiteral(T value, JdbcLiteralFormatter formatter, * either the {@link org.hibernate.metamodel.mapping.DiscriminatorType}, for polymorphic * domain types, or to {@link StandardBasicTypes#CLASS Class} for non-inherited ones. */ - public static SqmBindable getDiscriminatorType( + public static SqmBindableType getDiscriminatorType( SqmPathSource domainType, NodeBuilder nodeBuilder) { final SqmPathSource subPathSource = domainType.findSubPathSource( DISCRIMINATOR_ROLE_NAME ); - final SqmBindable type = subPathSource != null + final SqmBindableType type = subPathSource != null ? subPathSource.getPathType() : nodeBuilder.getTypeConfiguration().getBasicTypeRegistry().resolve( StandardBasicTypes.CLASS ); //noinspection unchecked - return (SqmBindable) type; + return (SqmBindableType) type; } } diff --git a/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureCallImpl.java b/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureCallImpl.java index 089a5687bb87..245ca269f631 100644 --- a/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureCallImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureCallImpl.java @@ -45,7 +45,7 @@ import org.hibernate.query.KeyedResultList; import org.hibernate.type.BindableType; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.type.OutputableType; import org.hibernate.query.Query; import org.hibernate.query.QueryParameter; @@ -500,14 +500,14 @@ public ProcedureParameter registerParameter( int position, Type typeReference, ParameterMode mode) { - final SqmBindable expressible = resolveExpressible( typeReference ); + final SqmBindableType expressible = resolveExpressible( typeReference ); final ProcedureParameterImpl procedureParameter = new ProcedureParameterImpl<>( position, mode, ((BindableType) typeReference).getJavaType(), expressible ); registerParameter( procedureParameter ); return procedureParameter; } - private SqmBindable resolveExpressible(Type typeReference) { + private SqmBindableType resolveExpressible(Type typeReference) { return getSessionFactory().getRuntimeMetamodels().resolveExpressible( typeReference ); } @@ -550,7 +550,7 @@ public ProcedureParameterImplementor registerParameter( String name, Type typeReference, ParameterMode mode) { - final SqmBindable expressible = resolveExpressible( typeReference ); + final SqmBindableType expressible = resolveExpressible( typeReference ); final ProcedureParameterImpl parameter = new ProcedureParameterImpl<>( name, mode, ((BindableType) typeReference).getJavaType(), expressible ); registerParameter( parameter ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/hql/internal/FullyQualifiedReflectivePathTerminal.java b/hibernate-core/src/main/java/org/hibernate/query/hql/internal/FullyQualifiedReflectivePathTerminal.java index 6addb283a5c7..53bb22228853 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/hql/internal/FullyQualifiedReflectivePathTerminal.java +++ b/hibernate-core/src/main/java/org/hibernate/query/hql/internal/FullyQualifiedReflectivePathTerminal.java @@ -17,7 +17,7 @@ import org.hibernate.query.hql.HqlInterpretationException; import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SemanticQueryWalker; import org.hibernate.query.sqm.spi.SqmCreationContext; import org.hibernate.query.sqm.tree.SqmCopyContext; @@ -41,7 +41,7 @@ public class FullyQualifiedReflectivePathTerminal extends FullyQualifiedReflectivePath implements SqmExpression { - private final @Nullable SqmBindable expressibleType; + private final @Nullable SqmBindableType expressibleType; private final SqmCreationState creationState; private final Function,?> handler; @@ -137,7 +137,7 @@ private JavaTypeRegistry javaTypeRegistry() { } @Override - public @Nullable SqmBindable getNodeType() { + public @Nullable SqmBindableType getNodeType() { return expressibleType; } @@ -153,7 +153,7 @@ public JavaType getJavaTypeDescriptor() { @Override - public void applyInferableType(@Nullable SqmBindable type) { + public void applyInferableType(@Nullable SqmBindableType type) { } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java b/hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java index 7eb6e426b28c..37121c67e7c3 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java +++ b/hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java @@ -71,7 +71,7 @@ import org.hibernate.query.criteria.JpaRoot; import org.hibernate.query.criteria.JpaSearchOrder; import org.hibernate.query.criteria.JpaXmlTableColumnNode; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.domain.SqmEntityDomainType; import org.hibernate.query.sqm.tuple.internal.AnonymousTupleType; import org.hibernate.query.hql.HqlLogging; @@ -4458,7 +4458,7 @@ public SqmNamedParameter visitNamedParameter(HqlParser.NamedParameterContext private SqmNamedParameter visitNamedParameter( HqlParser.NamedParameterContext ctx, - SqmBindable expressibleType) { + SqmBindableType expressibleType) { parameterStyle = parameterStyle.withNamed(); return resolveParameter( new SqmNamedParameter<>( @@ -4477,7 +4477,7 @@ public SqmPositionalParameter visitPositionalParameter(HqlParser.PositionalPa private SqmPositionalParameter visitPositionalParameter( HqlParser.PositionalParameterContext ctx, - SqmBindable expressibleType) { + SqmBindableType expressibleType) { if ( ctx.getChildCount() == 1 ) { throw new ParameterLabelException( "Unlabeled ordinal parameter ('?' rather than ?1)" ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/internal/QueryHelper.java b/hibernate-core/src/main/java/org/hibernate/query/internal/QueryHelper.java index 3c8f9d353482..3f76d198e986 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/internal/QueryHelper.java +++ b/hibernate-core/src/main/java/org/hibernate/query/internal/QueryHelper.java @@ -4,7 +4,7 @@ */ package org.hibernate.query.internal; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; /** @@ -16,7 +16,7 @@ private QueryHelper() { } @SafeVarargs - public static SqmBindable highestPrecedenceType(SqmBindable... types) { + public static SqmBindableType highestPrecedenceType(SqmBindableType... types) { if ( types == null || types.length == 0 ) { return null; } @@ -33,9 +33,9 @@ public static SqmBindable highestPrecedenceType(SqmBindable SqmBindable highestPrecedenceType2( - SqmBindable type1, - SqmBindable type2) { + public static SqmBindableType highestPrecedenceType2( + SqmBindableType type1, + SqmBindableType type2) { if ( type1 == null && type2 == null ) { return null; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBindingValidator.java b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBindingValidator.java index 0ff8162b4b42..fdc08fe331bb 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBindingValidator.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryParameterBindingValidator.java @@ -9,7 +9,7 @@ import java.util.Date; import org.hibernate.query.QueryArgumentException; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.type.BindableType; import org.hibernate.type.BindingContext; import org.hibernate.type.descriptor.java.JavaType; @@ -40,7 +40,7 @@ public void validate( return; } - final SqmBindable sqmExpressible = bindingContext.resolveExpressible( paramType ); + final SqmBindableType sqmExpressible = bindingContext.resolveExpressible( paramType ); final Class parameterJavaType = paramType.getJavaType() != null ? paramType.getJavaType() diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmBindable.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmBindableType.java similarity index 70% rename from hibernate-core/src/main/java/org/hibernate/query/sqm/SqmBindable.java rename to hibernate-core/src/main/java/org/hibernate/query/sqm/SqmBindableType.java index 25b049066a0a..af54e56fe1b7 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmBindable.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmBindableType.java @@ -14,9 +14,9 @@ * * @since 7.0 */ -public interface SqmBindable extends SqmExpressible, BindableType { +public interface SqmBindableType extends SqmExpressible, BindableType { @Override - default SqmBindable resolveExpressible(BindingContext bindingContext) { + default SqmBindableType resolveExpressible(BindingContext bindingContext) { return this; } } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmPathSource.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmPathSource.java index e73509205fd2..bff9ad1fea14 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmPathSource.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/SqmPathSource.java @@ -160,7 +160,7 @@ default SqmPathSource getIntermediatePathSource(SqmPathSource pathSource) SqmPath createSqmPath(SqmPath lhs, SqmPathSource intermediatePathSource); @Override - default SqmBindable getExpressible() { + default SqmBindableType getExpressible() { return getPathType(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/function/SelfRenderingSqmFunction.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/function/SelfRenderingSqmFunction.java index adf5d5f7a85d..b14c1ea2cccd 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/function/SelfRenderingSqmFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/function/SelfRenderingSqmFunction.java @@ -13,7 +13,7 @@ import org.hibernate.metamodel.spi.MappingMetamodelImplementor; import org.hibernate.metamodel.model.domain.ReturnableType; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.produce.function.ArgumentsValidator; import org.hibernate.query.sqm.produce.function.FunctionArgumentTypeResolver; import org.hibernate.query.sqm.produce.function.FunctionReturnTypeResolver; @@ -160,8 +160,8 @@ public Expression convertToSqlAst(SqmToSqlAstConverter walker) { } @Override - public @Nullable SqmBindable getNodeType() { - final SqmBindable nodeType = super.getNodeType(); + public @Nullable SqmBindableType getNodeType() { + final SqmBindableType nodeType = super.getNodeType(); if ( nodeType == null ) { final NodeBuilder nodeBuilder = nodeBuilder(); final ReturnableType resultType = diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java index 09d3833d6991..a887f4ca3d34 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java @@ -79,7 +79,7 @@ import org.hibernate.query.common.FrameKind; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SetOperator; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.SqmQuerySource; @@ -937,7 +937,7 @@ public SqmTuple tuple(SqmExpressible tupleType, List) getTypeConfiguration().resolveTupleType( sqmExpressions ); } - return new SqmTuple<>( new ArrayList<>( sqmExpressions ), (SqmBindable) tupleType, this ); + return new SqmTuple<>( new ArrayList<>( sqmExpressions ), (SqmBindableType) tupleType, this ); } @Override @@ -1353,7 +1353,7 @@ private SqmExpression createSqmArithmeticNode( operator ); @SuppressWarnings("unchecked") - final var castType = (SqmBindable) arithmeticType; + final var castType = (SqmBindableType) arithmeticType; return new SqmBinaryArithmetic<>( operator, leftHandExpression, @@ -1539,7 +1539,7 @@ public SqmLiteral literal(T value, SqmExpression typeInferen : createLiteral( value, resolveInferredType( value, typeInferenceSource ) ); } - private SqmLiteral createLiteral(T value, SqmBindable expressible) { + private SqmLiteral createLiteral(T value, SqmBindableType expressible) { if ( expressible.getExpressibleJavaType().isInstance( value ) ) { return new SqmLiteral<>( value, expressible, this ); } @@ -1555,7 +1555,7 @@ private SqmLiteral createLiteral(T value, SqmBindable expressible) { } } - private SqmBindable resolveInferredType( + private SqmBindableType resolveInferredType( T value, SqmExpression typeInferenceSource) { if ( typeInferenceSource != null ) { return typeInferenceSource.getNodeType(); @@ -1639,7 +1639,7 @@ public SqmExpression nullLiteral(Class resultClass) { else { final BasicType basicTypeForJavaType = getTypeConfiguration().getBasicTypeForJavaType( resultClass ); // if there's no basic type, it might be an entity type - final SqmBindable sqmExpressible = + final SqmBindableType sqmExpressible = basicTypeForJavaType == null ? resolveExpressible( getDomainModel().managedType( resultClass ) ) : basicTypeForJavaType; @@ -1647,7 +1647,7 @@ public SqmExpression nullLiteral(Class resultClass) { } } - class MultiValueParameterType implements SqmBindable { + class MultiValueParameterType implements SqmBindableType { private final JavaType javaType; public MultiValueParameterType(Class type) { @@ -2149,7 +2149,7 @@ private static BindableType resolveInferredParamet //noinspection unchecked return (BindableType) typeInferenceSource; } - final SqmBindable nodeType = typeInferenceSource.getExpressible(); + final SqmBindableType nodeType = typeInferenceSource.getExpressible(); if ( nodeType != null ) { return nodeType; } @@ -2240,7 +2240,7 @@ public SqmCoalesce coalesce() { @Override public JpaCoalesce coalesce(Expression x, Expression y) { @SuppressWarnings("unchecked") - final var sqmExpressible = (SqmBindable) highestPrecedenceType( + final var sqmExpressible = (SqmBindableType) highestPrecedenceType( ( (SqmExpression) x ).getExpressible(), ( (SqmExpression) y ).getExpressible() ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmUtil.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmUtil.java index c5fb8fd19a05..ba5d62901fa8 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmUtil.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmUtil.java @@ -55,7 +55,7 @@ import org.hibernate.query.spi.QueryParameterBindings; import org.hibernate.query.spi.QueryParameterImplementor; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.SqmQuerySource; @@ -1241,7 +1241,7 @@ public static boolean isResultTypeAlwaysAllowed(Class expectedResultClass) { } protected static void verifyResultType(Class resultClass, SqmSelectableNode selectableNode) { - final SqmBindable selectionExpressible = selectableNode.getExpressible(); + final SqmBindableType selectionExpressible = selectableNode.getExpressible(); final JavaType javaType = selectionExpressible == null ? selectableNode.getNodeJavaType() // for SqmDynamicInstantiation diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java index e0e118c222ae..55eee4d12fae 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java @@ -11,7 +11,7 @@ import org.hibernate.metamodel.model.domain.DomainType; import org.hibernate.metamodel.model.domain.EmbeddableDomainType; import org.hibernate.metamodel.model.domain.ManagedDomainType; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tuple.TupleType; import org.hibernate.metamodel.model.domain.internal.EntityDiscriminatorSqmPathSource; import org.hibernate.persister.entity.EntityPersister; @@ -101,11 +101,11 @@ public class TypecheckUtil { * @param lhsType the type of the expression on the LHS of the comparison operator * @param rhsType the type of the expression on the RHS of the comparison operator * - * @see #isTypeAssignable(SqmBindable, SqmBindable, BindingContext) + * @see #isTypeAssignable(SqmBindableType, SqmBindableType, BindingContext) */ public static boolean areTypesComparable( - SqmBindable lhsType, - SqmBindable rhsType, + SqmBindableType lhsType, + SqmBindableType rhsType, BindingContext bindingContext) { if ( lhsType == null || rhsType == null || lhsType == rhsType ) { return true; @@ -298,8 +298,8 @@ else if ( rhsType instanceof EntityDiscriminatorSqmPathSource discriminator ) final EntityPersister rhsEntity = bindingContext.getMappingMetamodel().getEntityDescriptor( rhsEntityName ); return rhsEntity.getRootEntityName().equals( lhsEntity.getRootEntityName() ); } - else if ( rhsType instanceof SqmBindable rhsExpressible ) { - final SqmBindable discriminatorType = (SqmBindable) + else if ( rhsType instanceof SqmBindableType rhsExpressible ) { + final SqmBindableType discriminatorType = (SqmBindableType) lhsDiscriminator.getEntityMapping().getDiscriminatorMapping().getMappedType(); return areTypesComparable( discriminatorType, rhsExpressible, bindingContext); } @@ -312,10 +312,10 @@ else if ( rhsType instanceof SqmBindable rhsExpressible ) { * @param targetType the type of the path expression to which a value is assigned * @param expressionType the type of the value expression being assigned to the path * - * @see #areTypesComparable(SqmBindable, SqmBindable, BindingContext) + * @see #areTypesComparable(SqmBindableType, SqmBindableType, BindingContext) */ private static boolean isTypeAssignable( - SqmBindable targetType, SqmBindable expressionType, + SqmBindableType targetType, SqmBindableType expressionType, BindingContext bindingContext) { if ( targetType == null || expressionType == null || targetType == expressionType ) { @@ -372,7 +372,7 @@ && sameJavaType( targetType, expressionType ) ) { return targetType.getRelationalJavaType() == expressionType.getRelationalJavaType(); } - private static boolean sameJavaType(SqmBindable leftType, SqmBindable rightType) { + private static boolean sameJavaType(SqmBindableType leftType, SqmBindableType rightType) { return canonicalize( leftType.getJavaType() ) == canonicalize( rightType.getJavaType() ); } @@ -428,8 +428,8 @@ public static void assertComparable(Expression x, Expression y, BindingCon // allow comparing literal null to things if ( !( left instanceof SqmLiteralNull ) && !( right instanceof SqmLiteralNull ) ) { - final SqmBindable leftType = left.getExpressible(); - final SqmBindable rightType = right.getExpressible(); + final SqmBindableType leftType = left.getExpressible(); + final SqmBindableType rightType = right.getExpressible(); if ( leftType != null && rightType != null && left.isEnum() && right.isEnum() ) { // this is needed by Hibernate Processor due to the weird @@ -466,8 +466,8 @@ public static void assertAssignable( // TODO: check that the target path is nullable } else { - final SqmBindable targetType = targetPath.getNodeType(); - final SqmBindable expressionType = expression.getNodeType(); + final SqmBindableType targetType = targetPath.getNodeType(); + final SqmBindableType expressionType = expression.getNodeType(); if ( targetType != null && expressionType != null && targetPath.isEnum() ) { // this is needed by Hibernate Processor due to the weird // handling of enumerated types in the annotation processor diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/mutation/internal/SelectableMappingExpressionConverter.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/mutation/internal/SelectableMappingExpressionConverter.java index d60dfe7de091..7511fb3ce287 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/mutation/internal/SelectableMappingExpressionConverter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/mutation/internal/SelectableMappingExpressionConverter.java @@ -8,7 +8,7 @@ import org.hibernate.metamodel.mapping.SelectableMapping; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.sql.SqmToSqlAstConverter; import org.hibernate.query.sqm.tree.expression.SqmSelfRenderingExpression; import org.hibernate.query.sqm.tree.from.SqmFrom; @@ -34,7 +34,7 @@ public static SqmSelection forSelectableMapping(SqmFrom from, Sele return new SqmSelection<>( new SqmSelfRenderingExpression<>( new SelectableMappingExpressionConverter( from.getNavigablePath(), selectableMapping ), - (SqmBindable) selectableMapping.getJdbcMapping(), + (SqmBindableType) selectableMapping.getJdbcMapping(), from.nodeBuilder() ), from.nodeBuilder() diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/internal/SetReturningFunctionTypeResolverBuilder.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/internal/SetReturningFunctionTypeResolverBuilder.java index aae1f6187deb..ab4c0427cd5e 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/internal/SetReturningFunctionTypeResolverBuilder.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/internal/SetReturningFunctionTypeResolverBuilder.java @@ -10,7 +10,7 @@ import org.hibernate.metamodel.mapping.SelectableMapping; import org.hibernate.metamodel.mapping.SelectablePath; import org.hibernate.metamodel.mapping.internal.SelectableMappingImpl; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tuple.internal.AnonymousTupleType; import org.hibernate.query.sqm.produce.function.SetReturningFunctionTypeResolver; import org.hibernate.query.sqm.sql.SqmToSqlAstConverter; @@ -100,7 +100,7 @@ public SetReturningFunctionTypeResolverImpl(SetReturningFunctionTypeResolverBuil @Override public AnonymousTupleType resolveTupleType(List> arguments, TypeConfiguration typeConfiguration) { - final SqmBindable[] componentTypes = new SqmBindable[typeResolvers.length + 1]; + final SqmBindableType[] componentTypes = new SqmBindableType[typeResolvers.length + 1]; final String[] componentNames = new String[typeResolvers.length + 1]; int i = 0; for ( TypeResolver typeResolver : typeResolvers ) { @@ -195,7 +195,7 @@ private interface TypeResolver { String selectionExpression(); - SqmBindable resolveTupleType(List> arguments, TypeConfiguration typeConfiguration); + SqmBindableType resolveTupleType(List> arguments, TypeConfiguration typeConfiguration); JdbcMapping resolveFunctionReturnType(List arguments, SqmToSqlAstConverter walker); } @@ -207,7 +207,7 @@ private record BasicTypeReferenceTypeResolver( ) implements TypeResolver { @Override - public SqmBindable resolveTupleType(List> arguments, TypeConfiguration typeConfiguration) { + public SqmBindableType resolveTupleType(List> arguments, TypeConfiguration typeConfiguration) { return typeConfiguration.getBasicTypeRegistry().resolve( basicTypeReference ); } @@ -224,7 +224,7 @@ private record BasicTypeTypeResolver( ) implements TypeResolver { @Override - public SqmBindable resolveTupleType(List> arguments, TypeConfiguration typeConfiguration) { + public SqmBindableType resolveTupleType(List> arguments, TypeConfiguration typeConfiguration) { return basicType; } @@ -241,7 +241,7 @@ private record ArgTypeTypeResolver( ) implements TypeResolver { @Override - public SqmBindable resolveTupleType(List> arguments, TypeConfiguration typeConfiguration) { + public SqmBindableType resolveTupleType(List> arguments, TypeConfiguration typeConfiguration) { return arguments.get( argPosition ).getExpressible(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmExpressibleAccessor.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmExpressibleAccessor.java index 17d8c199682d..e713bc65fa46 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmExpressibleAccessor.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmExpressibleAccessor.java @@ -4,7 +4,7 @@ */ package org.hibernate.query.sqm.tree; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.type.descriptor.java.JavaType; @@ -22,5 +22,5 @@ default JavaType getNodeJavaType() { return nodeType == null ? null : nodeType.getExpressibleJavaType(); } - SqmBindable getExpressible(); + SqmBindableType getExpressible(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmTypedNode.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmTypedNode.java index ecd7e247151d..5747ecacd1a3 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmTypedNode.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/SqmTypedNode.java @@ -4,7 +4,7 @@ */ package org.hibernate.query.sqm.tree; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.type.descriptor.java.JavaType; @@ -25,12 +25,12 @@ public interface SqmTypedNode extends SqmNode, SqmExpressibleAccessor, Sqm } @Override - default @Nullable SqmBindable getExpressible() { + default @Nullable SqmBindableType getExpressible() { return getNodeType(); } @Nullable - SqmBindable getNodeType(); + SqmBindableType getNodeType(); @Override SqmTypedNode copy(SqmCopyContext context); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTable.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTable.java index a5b5fd638bc5..f50113fde074 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTable.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTable.java @@ -11,7 +11,7 @@ import org.hibernate.metamodel.model.domain.DomainType; import org.hibernate.query.criteria.JpaCteCriteriaAttribute; import org.hibernate.query.criteria.JpaCteCriteriaType; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tuple.internal.AnonymousTupleSimpleSqmPathSource; import org.hibernate.query.sqm.tuple.internal.AnonymousTupleType; import org.hibernate.query.sqm.tuple.internal.CteTupleTableGroupProducer; @@ -114,8 +114,8 @@ public JpaCteCriteriaAttribute getAttribute(String name) { } @Override - public SqmBindable get(String componentName) { - final SqmBindable sqmExpressible = super.get( componentName ); + public SqmBindableType get(String componentName) { + final SqmBindableType sqmExpressible = super.get( componentName ); if ( sqmExpressible != null ) { return sqmExpressible; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTableColumn.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTableColumn.java index 2d24092ce781..42ef85bf4fb6 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTableColumn.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/cte/SqmCteTableColumn.java @@ -6,7 +6,7 @@ import org.hibernate.query.criteria.JpaCteCriteriaAttribute; import org.hibernate.query.criteria.JpaCteCriteriaType; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmExpressible; /** @@ -16,12 +16,12 @@ public class SqmCteTableColumn implements JpaCteCriteriaAttribute { private final SqmCteTable cteTable; private final String columnName; - private final SqmBindable typeExpressible; + private final SqmBindableType typeExpressible; public SqmCteTableColumn( SqmCteTable cteTable, String columnName, - SqmBindable typeExpressible) { + SqmBindableType typeExpressible) { this.cteTable = cteTable; this.columnName = columnName; this.typeExpressible = typeExpressible; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmPath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmPath.java index dab746f5a3a1..6dbc75c8eaf2 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmPath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmPath.java @@ -18,7 +18,7 @@ import org.hibernate.metamodel.model.domain.ManagedDomainType; import org.hibernate.metamodel.model.domain.PersistentAttribute; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.expression.AbstractSqmExpression; @@ -81,7 +81,7 @@ private SqmPath getRoot(SqmPath lhs) { } @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return referencedPathSource.getPathType(); } @@ -159,7 +159,7 @@ && getLhs().getResolvedModel().getPathType() instanceof SqmManagedDomainType } @Override - public SqmBindable getExpressible() { + public SqmBindableType getExpressible() { return getResolvedModel().getExpressible(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmSimplePath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmSimplePath.java index 927367d2e21e..dab4e49e60de 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmSimplePath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/AbstractSqmSimplePath.java @@ -4,7 +4,7 @@ */ package org.hibernate.query.sqm.tree.domain; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.spi.NavigablePath; import org.hibernate.query.sqm.NodeBuilder; @@ -43,7 +43,7 @@ public void appendHqlString(StringBuilder hql, SqmRenderContext context) { } @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return getReferencedPathSource().getExpressible(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java index 8a00493084ee..812e2cc60630 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java @@ -8,7 +8,7 @@ import org.hibernate.metamodel.model.domain.EntityDomainType; import org.hibernate.query.hql.spi.SqmPathRegistry; import org.hibernate.query.spi.QueryEngine; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.UnknownPathException; import org.hibernate.query.sqm.function.SelfRenderingSqmFunction; import org.hibernate.query.sqm.function.SqmFunctionRegistry; @@ -33,7 +33,7 @@ */ public class SqmBasicValuedSimplePath extends AbstractSqmSimplePath - implements SqmBindable { + implements SqmBindableType { public SqmBasicValuedSimplePath( NavigablePath navigablePath, SqmPathSource referencedPathSource, @@ -74,7 +74,7 @@ public SqmBasicValuedSimplePath copy(SqmCopyContext context) { } @Override - public SqmBindable getExpressible() { + public SqmBindableType getExpressible() { return this; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java index 04e19c1608e0..45f00ecfc2bf 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java @@ -6,15 +6,15 @@ import org.hibernate.Incubating; import org.hibernate.metamodel.model.domain.DomainType; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; @Incubating public interface SqmDomainType - extends DomainType, SqmBindable { + extends DomainType, SqmBindableType { @Override default String getTypeName() { - return SqmBindable.super.getTypeName(); + return SqmBindableType.super.getTypeName(); } default int getTupleLength() { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmElementAggregateFunction.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmElementAggregateFunction.java index 70602b0280be..022ee0d10f3c 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmElementAggregateFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmElementAggregateFunction.java @@ -10,7 +10,7 @@ import org.hibernate.metamodel.model.domain.ReturnableType; import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.sql.SqmToSqlAstConverter; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -61,7 +61,7 @@ public SqmElementAggregateFunction(SqmPath pluralDomainPath, String functionN } @Override - public SqmBindable getExpressible() { + public SqmBindableType getExpressible() { return returnableType == null ? super.getExpressible() : nodeBuilder().resolveExpressible( returnableType ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddedValuedSimplePath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddedValuedSimplePath.java index fb0a53dba585..dc6c79e599a0 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddedValuedSimplePath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEmbeddedValuedSimplePath.java @@ -10,7 +10,7 @@ import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.TreatException; import org.hibernate.query.sqm.tree.SqmCopyContext; @@ -24,7 +24,7 @@ */ public class SqmEmbeddedValuedSimplePath extends AbstractSqmSimplePath - implements SqmBindable { + implements SqmBindableType { public SqmEmbeddedValuedSimplePath( NavigablePath navigablePath, @@ -69,7 +69,7 @@ public SqmEmbeddedValuedSimplePath copy(SqmCopyContext context) { } @Override - public SqmBindable getExpressible() { + public SqmBindableType getExpressible() { return this; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEntityValuedSimplePath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEntityValuedSimplePath.java index 8d50ff99a6c4..41e89e6e3cde 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEntityValuedSimplePath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmEntityValuedSimplePath.java @@ -5,7 +5,7 @@ package org.hibernate.query.sqm.tree.domain; import org.hibernate.metamodel.model.domain.EntityDomainType; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.spi.NavigablePath; import org.hibernate.query.PathException; import org.hibernate.query.hql.spi.SqmCreationState; @@ -63,7 +63,7 @@ public X accept(SemanticQueryWalker walker) { } @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return getReferencedPathSource().getPathType(); } // We can't expose that the type is a EntityDomainType because it could also be a MappedSuperclass diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmFunctionPath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmFunctionPath.java index ba137f79616d..e0cd3fffd2a9 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmFunctionPath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmFunctionPath.java @@ -12,7 +12,7 @@ import org.hibernate.query.hql.spi.SqmPathRegistry; import org.hibernate.query.spi.QueryEngine; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.TreatException; import org.hibernate.query.sqm.function.SelfRenderingSqmFunction; @@ -50,7 +50,7 @@ public SqmFunctionPath(NavigablePath navigablePath, SqmFunction function) { private static SqmPathSource determinePathSource(NavigablePath navigablePath, SqmFunction function) { //noinspection unchecked - final SqmBindable nodeType = (SqmBindable) function.getNodeType(); + final SqmBindableType nodeType = (SqmBindableType) function.getNodeType(); final Class bindableJavaType = nodeType.getJavaType(); final ManagedType managedType = function.nodeBuilder() .getJpaMetamodel() diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmIndexAggregateFunction.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmIndexAggregateFunction.java index c5f09409715e..caa1e6994c6a 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmIndexAggregateFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmIndexAggregateFunction.java @@ -10,7 +10,7 @@ import org.hibernate.metamodel.model.domain.ReturnableType; import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.sql.SqmToSqlAstConverter; import org.hibernate.query.sqm.tree.SqmCopyContext; @@ -65,7 +65,7 @@ public SqmIndexAggregateFunction(SqmPath pluralDomainPath, String functionNam } @Override - public SqmBindable getExpressible() { + public SqmBindableType getExpressible() { return returnableType == null ? super.getExpressible() : nodeBuilder().resolveExpressible( returnableType ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmMapEntryReference.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmMapEntryReference.java index 0b4127390508..b3de597f2beb 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmMapEntryReference.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmMapEntryReference.java @@ -13,7 +13,7 @@ import org.hibernate.query.criteria.JpaSelection; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.select.SqmSelectableNode; @@ -33,7 +33,7 @@ * @author Steve Ebersole */ public class SqmMapEntryReference - implements SqmSelectableNode>, Expression>, SqmBindable> { + implements SqmSelectableNode>, Expression>, SqmBindableType> { @SuppressWarnings({"FieldCanBeLocal", "unused"}) private final SqmPath mapPath; private final NodeBuilder nodeBuilder; @@ -127,7 +127,7 @@ public List> getSelectionItems() { } @Override - public SqmBindable> getNodeType() { + public SqmBindableType> getNodeType() { return this; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmPath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmPath.java index 32355446602e..3d477f9e77e5 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmPath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmPath.java @@ -20,7 +20,7 @@ import org.hibernate.query.hql.spi.SemanticPathPart; import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.ParsingException; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.expression.SqmExpression; @@ -87,10 +87,10 @@ public interface SqmPath extends SqmExpression, SemanticPathPart, JpaPath< * This node's type is its "referenced path source" */ @Override - SqmBindable getNodeType(); + SqmBindableType getNodeType(); @Override - default void applyInferableType(@Nullable SqmBindable type) { + default void applyInferableType(@Nullable SqmBindableType type) { // do nothing } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmSingularJoin.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmSingularJoin.java index 7103bda8094b..2b9032413881 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmSingularJoin.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmSingularJoin.java @@ -9,7 +9,7 @@ import org.hibernate.metamodel.model.domain.EntityDomainType; import org.hibernate.metamodel.model.domain.ManagedDomainType; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.spi.NavigablePath; import org.hibernate.query.sqm.NodeBuilder; @@ -85,7 +85,7 @@ public SqmSingularJoin copy(SqmCopyContext context) { } @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return getReferencedPathSource().getExpressible(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedBagJoin.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedBagJoin.java index edc825fb4afe..cb4fc1ecf179 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedBagJoin.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedBagJoin.java @@ -8,7 +8,7 @@ import org.hibernate.metamodel.model.domain.TreatableDomainType; import org.hibernate.query.criteria.JpaExpression; import org.hibernate.query.criteria.JpaPredicate; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -104,7 +104,7 @@ public TreatableDomainType getTreatTarget() { } @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedCrossJoin.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedCrossJoin.java index ea0f3bd72dd5..02cb96eef930 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedCrossJoin.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedCrossJoin.java @@ -5,7 +5,7 @@ package org.hibernate.query.sqm.tree.domain; import org.hibernate.metamodel.model.domain.EntityDomainType; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -76,7 +76,7 @@ public SqmPath getWrappedPath() { @SuppressWarnings("rawtypes") @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedEmbeddedValuedSimplePath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedEmbeddedValuedSimplePath.java index ab61cf0be2b8..a8f230f03870 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedEmbeddedValuedSimplePath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedEmbeddedValuedSimplePath.java @@ -6,7 +6,7 @@ import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -78,7 +78,7 @@ public SqmPath getWrappedPath() { } @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedEntityJoin.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedEntityJoin.java index 47625ca54cb0..e887a4893bbe 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedEntityJoin.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedEntityJoin.java @@ -5,7 +5,7 @@ package org.hibernate.query.sqm.tree.domain; import org.hibernate.metamodel.model.domain.EntityDomainType; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.from.SqmEntityJoin; @@ -87,7 +87,7 @@ public SqmPath getWrappedPath() { } @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedListJoin.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedListJoin.java index f83b3b69d50b..916d208cffc9 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedListJoin.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedListJoin.java @@ -9,7 +9,7 @@ import org.hibernate.query.criteria.JpaExpression; import org.hibernate.query.criteria.JpaPredicate; import org.hibernate.query.hql.spi.SqmCreationState; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -106,7 +106,7 @@ public TreatableDomainType getTreatTarget() { } @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedMapJoin.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedMapJoin.java index 9196abe87eab..7adb68befbbf 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedMapJoin.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedMapJoin.java @@ -9,7 +9,7 @@ import org.hibernate.metamodel.model.domain.TreatableDomainType; import org.hibernate.query.criteria.JpaExpression; import org.hibernate.query.criteria.JpaPredicate; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -104,7 +104,7 @@ public TreatableDomainType getTreatTarget() { } @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedPluralPartJoin.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedPluralPartJoin.java index 1ebaaf0183a3..8d474aea9763 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedPluralPartJoin.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedPluralPartJoin.java @@ -5,7 +5,7 @@ package org.hibernate.query.sqm.tree.domain; import org.hibernate.metamodel.model.domain.EntityDomainType; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -85,7 +85,7 @@ public EntityDomainType getTreatTarget() { } @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedRoot.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedRoot.java index e2fc32a9c0f5..1221a4db5b66 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedRoot.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedRoot.java @@ -7,7 +7,7 @@ import org.hibernate.metamodel.model.domain.EntityDomainType; import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.from.SqmRoot; @@ -86,7 +86,7 @@ public SqmPath getWrappedPath() { } @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSetJoin.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSetJoin.java index 3d7eb7e7f9af..0f2a496a26eb 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSetJoin.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSetJoin.java @@ -8,7 +8,7 @@ import org.hibernate.metamodel.model.domain.TreatableDomainType; import org.hibernate.query.criteria.JpaExpression; import org.hibernate.query.criteria.JpaPredicate; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -104,7 +104,7 @@ public TreatableDomainType getTreatTarget() { } @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSimplePath.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSimplePath.java index 73e2d16e2447..e2abd38b1d09 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSimplePath.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSimplePath.java @@ -7,7 +7,7 @@ import org.hibernate.query.PathException; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -104,7 +104,7 @@ public SqmPath getWrappedPath() { } @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSingularJoin.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSingularJoin.java index 75d3bece678b..563bb9172f1e 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSingularJoin.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmTreatedSingularJoin.java @@ -8,7 +8,7 @@ import org.hibernate.metamodel.model.domain.TreatableDomainType; import org.hibernate.query.criteria.JpaExpression; import org.hibernate.query.criteria.JpaPredicate; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -107,7 +107,7 @@ public TreatableDomainType getTreatTarget() { } @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return treatTarget; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AbstractSqmExpression.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AbstractSqmExpression.java index d2a815bcb832..5dc991fb1919 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AbstractSqmExpression.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AbstractSqmExpression.java @@ -9,7 +9,7 @@ import java.util.Collection; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmTreeCreationLogger; import org.hibernate.query.sqm.internal.SqmCriteriaNodeBuilder; import org.hibernate.query.sqm.tree.jpa.AbstractJpaSelection; @@ -27,7 +27,7 @@ */ public abstract class AbstractSqmExpression extends AbstractJpaSelection implements SqmExpression { - public AbstractSqmExpression(@Nullable SqmBindable type, NodeBuilder criteriaBuilder) { + public AbstractSqmExpression(@Nullable SqmBindableType type, NodeBuilder criteriaBuilder) { super( type, criteriaBuilder ); } @@ -37,10 +37,10 @@ public SqmCriteriaNodeBuilder nodeBuilder() { } @Override - public void applyInferableType(@Nullable SqmBindable type) { + public void applyInferableType(@Nullable SqmBindableType type) { } - protected void internalApplyInferableType(@Nullable SqmBindable newType) { + protected void internalApplyInferableType(@Nullable SqmBindableType newType) { SqmTreeCreationLogger.LOGGER.debugf( "Applying inferable type to SqmExpression [%s] : %s -> %s", this, diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AbstractSqmParameter.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AbstractSqmParameter.java index 024ae910a771..b6bb718f9893 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AbstractSqmParameter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AbstractSqmParameter.java @@ -7,7 +7,7 @@ import org.hibernate.metamodel.model.domain.PluralPersistentAttribute; import org.hibernate.type.BindableType; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmExpressible; import org.checkerframework.checker.nullness.qual.Nullable; @@ -22,17 +22,17 @@ public abstract class AbstractSqmParameter extends AbstractSqmExpression i public AbstractSqmParameter( boolean canBeMultiValued, - SqmBindable inherentType, + SqmBindableType inherentType, NodeBuilder nodeBuilder) { super( inherentType, nodeBuilder ); this.canBeMultiValued = canBeMultiValued; } @Override - public void applyInferableType(@Nullable SqmBindable type) { + public void applyInferableType(@Nullable SqmBindableType type) { if ( type != null ) { if ( type instanceof PluralPersistentAttribute pluralPersistentAttribute ) { - internalApplyInferableType( (SqmBindable) pluralPersistentAttribute.getElementType() ); + internalApplyInferableType( (SqmBindableType) pluralPersistentAttribute.getElementType() ); } else { internalApplyInferableType( type ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AsWrapperSqmExpression.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AsWrapperSqmExpression.java index 8f8702f18a31..43792fff03ca 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AsWrapperSqmExpression.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/AsWrapperSqmExpression.java @@ -5,7 +5,7 @@ package org.hibernate.query.sqm.tree.expression; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.type.BasicType; @@ -13,7 +13,7 @@ public class AsWrapperSqmExpression extends AbstractSqmExpression { private final SqmExpression expression; - AsWrapperSqmExpression(SqmBindable type, SqmExpression expression) { + AsWrapperSqmExpression(SqmBindableType type, SqmExpression expression) { super( type, expression.nodeBuilder() ); this.expression = expression; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/JpaCriteriaParameter.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/JpaCriteriaParameter.java index 233747760991..3a630ac2e289 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/JpaCriteriaParameter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/JpaCriteriaParameter.java @@ -13,7 +13,7 @@ import org.hibernate.query.spi.QueryParameterImplementor; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -121,7 +121,7 @@ public Class getParameterType() { } @Override - protected void internalApplyInferableType(SqmBindable newType) { + protected void internalApplyInferableType(SqmBindableType newType) { super.internalApplyInferableType( newType ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/NullSqmExpressible.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/NullSqmExpressible.java index 3c52cac41a9e..cb7eb24b147e 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/NullSqmExpressible.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/NullSqmExpressible.java @@ -4,7 +4,7 @@ */ package org.hibernate.query.sqm.tree.expression; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.domain.SqmDomainType; import org.hibernate.type.descriptor.java.JavaType; @@ -13,7 +13,7 @@ /** * @author Steve Ebersole */ -public class NullSqmExpressible implements SqmBindable { +public class NullSqmExpressible implements SqmBindableType { /** * Singleton access */ diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmAliasedNodeRef.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmAliasedNodeRef.java index 53f49f92d3f0..a49459a3476b 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmAliasedNodeRef.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmAliasedNodeRef.java @@ -4,7 +4,7 @@ */ package org.hibernate.query.sqm.tree.expression; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.spi.NavigablePath; import org.hibernate.query.sqm.NodeBuilder; @@ -22,7 +22,7 @@ public class SqmAliasedNodeRef extends AbstractSqmExpression { // The navigable path is optionally set in case this is a reference to an attribute of a selection private final NavigablePath navigablePath; - public SqmAliasedNodeRef(int position, SqmBindable intType, NodeBuilder criteriaBuilder) { + public SqmAliasedNodeRef(int position, SqmBindableType intType, NodeBuilder criteriaBuilder) { super( intType, criteriaBuilder ); this.position = position; this.navigablePath = null; @@ -31,7 +31,7 @@ public SqmAliasedNodeRef(int position, SqmBindable intType, NodeBuilder public SqmAliasedNodeRef( int position, NavigablePath navigablePath, - SqmBindable type, + SqmBindableType type, NodeBuilder criteriaBuilder) { super( type, criteriaBuilder ); this.position = position; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmAny.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmAny.java index 314062613a7b..c60fcff2565a 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmAny.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmAny.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.select.SqmSubQuery; @@ -26,7 +26,7 @@ public SqmAny(SqmSubQuery subquery, NodeBuilder criteriaBuilder) { } @Override - public @Nullable SqmBindable getNodeType() { + public @Nullable SqmBindableType getNodeType() { return subquery.getNodeType(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmBinaryArithmetic.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmBinaryArithmetic.java index 1b87d2ff8098..aae475728703 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmBinaryArithmetic.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmBinaryArithmetic.java @@ -8,7 +8,7 @@ import org.hibernate.query.sqm.BinaryArithmeticOperator; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.select.SqmSelectableNode; @@ -33,7 +33,7 @@ public SqmBinaryArithmetic( NodeBuilder nodeBuilder) { //noinspection unchecked super( - (SqmBindable) domainModel.getTypeConfiguration().resolveArithmeticType( + (SqmBindableType) domainModel.getTypeConfiguration().resolveArithmeticType( lhsOperand.getExpressible(), rhsOperand.getExpressible(), operator @@ -57,7 +57,7 @@ public SqmBinaryArithmetic( BinaryArithmeticOperator operator, SqmExpression lhsOperand, SqmExpression rhsOperand, - SqmBindable expressibleType, + SqmBindableType expressibleType, NodeBuilder nodeBuilder) { super( expressibleType, nodeBuilder ); @@ -122,7 +122,7 @@ public SqmExpression getRightHandOperand() { } @Override - protected void internalApplyInferableType(SqmBindable type) { + protected void internalApplyInferableType(SqmBindableType type) { rhsOperand.applyInferableType( type ); lhsOperand.applyInferableType( type ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmByUnit.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmByUnit.java index 845d00da2d10..e6d1a6833b69 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmByUnit.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmByUnit.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -20,7 +20,7 @@ public class SqmByUnit extends AbstractSqmExpression { public SqmByUnit( SqmDurationUnit unit, SqmExpression duration, - SqmBindable longType, + SqmBindableType longType, NodeBuilder nodeBuilder) { super( longType, nodeBuilder ); this.unit = unit; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCaseSearched.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCaseSearched.java index c33b53faf1d6..35a15711c9ec 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCaseSearched.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCaseSearched.java @@ -11,7 +11,7 @@ import org.hibernate.query.internal.QueryHelper; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.predicate.SqmPredicate; @@ -31,7 +31,7 @@ public SqmCaseSearched(NodeBuilder nodeBuilder) { this( null, nodeBuilder ); } - public SqmCaseSearched(SqmBindable inherentType, NodeBuilder nodeBuilder) { + public SqmCaseSearched(SqmBindableType inherentType, NodeBuilder nodeBuilder) { this( inherentType, 10, nodeBuilder ); } @@ -39,7 +39,7 @@ public SqmCaseSearched(int estimatedWhenSize, NodeBuilder nodeBuilder) { this( null, estimatedWhenSize, nodeBuilder ); } - private SqmCaseSearched(SqmBindable inherentType, int estimatedWhenSize, NodeBuilder nodeBuilder) { + private SqmCaseSearched(SqmBindableType inherentType, int estimatedWhenSize, NodeBuilder nodeBuilder) { super( inherentType, nodeBuilder ); this.whenFragments = new ArrayList<>( estimatedWhenSize ); } @@ -89,10 +89,10 @@ public SqmCaseSearched otherwise(SqmExpression otherwiseExpressi return this; } - private void applyInferableResultType(SqmBindable type) { + private void applyInferableResultType(SqmBindableType type) { if ( type != null ) { - final SqmBindable oldType = getExpressible(); - final SqmBindable newType = QueryHelper.highestPrecedenceType2( oldType, type ); + final SqmBindableType oldType = getExpressible(); + final SqmBindableType newType = QueryHelper.highestPrecedenceType2( oldType, type ); if ( newType != null && newType != oldType ) { internalApplyInferableType( newType ); } @@ -100,7 +100,7 @@ private void applyInferableResultType(SqmBindable type) { } @Override - protected void internalApplyInferableType(SqmBindable newType) { + protected void internalApplyInferableType(SqmBindableType newType) { super.internalApplyInferableType( newType ); if ( otherwise != null ) { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCaseSimple.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCaseSimple.java index 1ba7b37962f0..4d7235a63d10 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCaseSimple.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCaseSimple.java @@ -11,7 +11,7 @@ import org.hibernate.query.criteria.JpaSimpleCase; import org.hibernate.query.internal.QueryHelper; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SemanticQueryWalker; import org.hibernate.query.sqm.tree.SqmCopyContext; @@ -36,13 +36,13 @@ public SqmCaseSimple(SqmExpression fixture, int estimatedWhenSize, NodeBuilde this( fixture, null, estimatedWhenSize, nodeBuilder ); } - public SqmCaseSimple(SqmExpression fixture, SqmBindable inherentType, NodeBuilder nodeBuilder) { + public SqmCaseSimple(SqmExpression fixture, SqmBindableType inherentType, NodeBuilder nodeBuilder) { this( fixture, inherentType, 10, nodeBuilder ); } private SqmCaseSimple( SqmExpression fixture, - SqmBindable inherentType, + SqmBindableType inherentType, int estimatedWhenSize, NodeBuilder nodeBuilder) { super( inherentType, nodeBuilder ); @@ -102,10 +102,10 @@ public void when(SqmExpression test, SqmExpression res applyInferableResultType( result.getNodeType() ); } - private void applyInferableResultType(SqmBindable type) { + private void applyInferableResultType(SqmBindableType type) { if ( type != null ) { - final SqmBindable oldType = getExpressible(); - final SqmBindable newType = QueryHelper.highestPrecedenceType2( oldType, type ); + final SqmBindableType oldType = getExpressible(); + final SqmBindableType newType = QueryHelper.highestPrecedenceType2( oldType, type ); if ( newType != null && newType != oldType ) { internalApplyInferableType( newType ); } @@ -113,7 +113,7 @@ private void applyInferableResultType(SqmBindable type) { } @Override - protected void internalApplyInferableType(SqmBindable newType) { + protected void internalApplyInferableType(SqmBindableType newType) { super.internalApplyInferableType( newType ); if ( otherwise != null ) { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCastTarget.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCastTarget.java index 275d86c06d4a..4d7697926812 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCastTarget.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCastTarget.java @@ -9,7 +9,7 @@ import org.hibernate.query.criteria.JpaCastTarget; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.AbstractSqmNode; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -89,7 +89,7 @@ public X accept(SemanticQueryWalker walker) { } @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return nodeBuilder().resolveExpressible( type ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCoalesce.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCoalesce.java index 1c417150ed71..d78e48e380c8 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCoalesce.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCoalesce.java @@ -12,7 +12,7 @@ import org.hibernate.query.criteria.JpaExpression; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.function.SqmFunctionDescriptor; import org.hibernate.query.sqm.tree.SqmCopyContext; @@ -31,13 +31,13 @@ public SqmCoalesce(NodeBuilder nodeBuilder) { this( null, nodeBuilder ); } - public SqmCoalesce(SqmBindable type, NodeBuilder nodeBuilder) { + public SqmCoalesce(SqmBindableType type, NodeBuilder nodeBuilder) { super( type, nodeBuilder ); functionDescriptor = nodeBuilder.getQueryEngine().getSqmFunctionRegistry().findFunctionDescriptor( "coalesce" ); this.arguments = new ArrayList<>(); } - public SqmCoalesce(SqmBindable type, int numberOfArguments, NodeBuilder nodeBuilder) { + public SqmCoalesce(SqmBindableType type, int numberOfArguments, NodeBuilder nodeBuilder) { super( type, nodeBuilder ); functionDescriptor = nodeBuilder.getQueryEngine().getSqmFunctionRegistry().findFunctionDescriptor( "coalesce" ); this.arguments = new ArrayList<>( numberOfArguments ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCollation.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCollation.java index a720c58807c8..9e1718035f37 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCollation.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCollation.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -14,7 +14,7 @@ * @author Christian Beikov */ public class SqmCollation extends SqmLiteral { - public SqmCollation(String value, SqmBindable inherentType, NodeBuilder nodeBuilder) { + public SqmCollation(String value, SqmBindableType inherentType, NodeBuilder nodeBuilder) { super(value, inherentType, nodeBuilder); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCollectionSize.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCollectionSize.java index 260b163a3f86..534e0698a008 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCollectionSize.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmCollectionSize.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.domain.SqmPath; @@ -24,7 +24,7 @@ public SqmCollectionSize(SqmPath pluralPath, NodeBuilder nodeBuilder) { this( pluralPath, nodeBuilder.getIntegerType(), nodeBuilder ); } - public SqmCollectionSize(SqmPath pluralPath, SqmBindable sizeType, NodeBuilder nodeBuilder) { + public SqmCollectionSize(SqmPath pluralPath, SqmBindableType sizeType, NodeBuilder nodeBuilder) { super( sizeType, nodeBuilder ); this.pluralPath = pluralPath; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmDistinct.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmDistinct.java index ce24ddd6f2da..a9f68b279a1f 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmDistinct.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmDistinct.java @@ -5,7 +5,7 @@ package org.hibernate.query.sqm.tree.expression; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SemanticQueryWalker; import org.hibernate.query.sqm.tree.AbstractSqmNode; import org.hibernate.query.sqm.tree.SqmCopyContext; @@ -44,7 +44,7 @@ public SqmExpression getExpression() { } @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return expression.getNodeType(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmDurationUnit.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmDurationUnit.java index da04d9129256..623690aa68c3 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmDurationUnit.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmDurationUnit.java @@ -8,7 +8,7 @@ import org.hibernate.query.common.TemporalUnit; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.AbstractSqmNode; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -46,7 +46,7 @@ public TemporalUnit getUnit() { } @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return nodeBuilder().resolveExpressible( type ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEnumLiteral.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEnumLiteral.java index 8ef14ed5d30f..7bc20691c084 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEnumLiteral.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEnumLiteral.java @@ -12,7 +12,7 @@ import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.UnknownPathException; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -28,7 +28,7 @@ * * @author Steve Ebersole */ -public class SqmEnumLiteral> extends SqmLiteral implements SqmBindable, SemanticPathPart { +public class SqmEnumLiteral> extends SqmLiteral implements SqmBindableType, SemanticPathPart { private final E enumValue; private final EnumJavaType referencedEnumTypeDescriptor; private final String enumValueName; @@ -65,7 +65,7 @@ public SqmEnumLiteral copy(SqmCopyContext context) { } @Override - public SqmBindable getExpressible() { + public SqmBindableType getExpressible() { return this; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEvery.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEvery.java index 28b41bf91e75..4a613324655e 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEvery.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmEvery.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.select.SqmSubQuery; @@ -26,7 +26,7 @@ public SqmEvery(SqmSubQuery subquery, NodeBuilder criteriaBuilder) { } @Override - public @Nullable SqmBindable getNodeType() { + public @Nullable SqmBindableType getNodeType() { return subquery.getNodeType(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpression.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpression.java index 8c22ed11e468..1d6615d485a9 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpression.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpression.java @@ -17,7 +17,7 @@ import org.hibernate.query.criteria.JpaExpression; import org.hibernate.query.criteria.JpaPredicate; import org.hibernate.query.spi.QueryEngine; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.predicate.SqmPredicate; import org.hibernate.query.sqm.tree.select.SqmSelectableNode; @@ -41,7 +41,7 @@ public interface SqmExpression extends SqmSelectableNode, JpaExpression */ @Override @Nullable - SqmBindable getNodeType(); + SqmBindableType getNodeType(); /** * Used to apply type information based on the expression's usage @@ -52,7 +52,7 @@ public interface SqmExpression extends SqmSelectableNode, JpaExpression * an implicit cast) */ @Internal - void applyInferableType(@Nullable SqmBindable type); + void applyInferableType(@Nullable SqmBindableType type); @Override default void visitSubSelectableNodes(Consumer> jpaSelectionConsumer) { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpressionHelper.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpressionHelper.java index f65ef4d8948f..98f7a3fb48f9 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpressionHelper.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpressionHelper.java @@ -11,7 +11,7 @@ import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.BinaryArithmeticOperator; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.tree.domain.SqmPath; import org.hibernate.type.descriptor.java.JavaTypeHelper; @@ -29,13 +29,13 @@ public static SqmExpressible toSqmType(BindableType parameterType, Sqm return toSqmType( parameterType, creationState.getCreationContext() ); } - public static SqmBindable toSqmType( + public static SqmBindableType toSqmType( BindableType anticipatedType, BindingContext bindingContext) { if ( anticipatedType == null ) { return null; } else { - final SqmBindable sqmExpressible = bindingContext.resolveExpressible( anticipatedType ); + final SqmBindableType sqmExpressible = bindingContext.resolveExpressible( anticipatedType ); assert sqmExpressible != null; return sqmExpressible; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExtractUnit.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExtractUnit.java index 00adea41dc8f..aad3dbf7a719 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExtractUnit.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExtractUnit.java @@ -8,7 +8,7 @@ import org.hibernate.query.common.TemporalUnit; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.AbstractSqmNode; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -46,7 +46,7 @@ public X accept(SemanticQueryWalker walker) { } @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return nodeBuilder().resolveExpressible( type ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java index ba426a9f88e2..4b9a6d826c54 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java @@ -17,7 +17,7 @@ import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.UnknownPathException; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -36,13 +36,13 @@ * @author Steve Ebersole */ public class SqmFieldLiteral - implements SqmExpression, SqmBindable, SqmSelectableNode, SemanticPathPart { + implements SqmExpression, SqmBindableType, SqmSelectableNode, SemanticPathPart { private final T value; private final JavaType fieldJavaType; private final String fieldName; private final NodeBuilder nodeBuilder; - private final SqmBindable expressible; + private final SqmBindableType expressible; public SqmFieldLiteral( Field field, @@ -113,12 +113,12 @@ public NodeBuilder getNodeBuilder() { } @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return expressible; } @Override - public void applyInferableType(@Nullable SqmBindable type) { + public void applyInferableType(@Nullable SqmBindableType type) { } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFormat.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFormat.java index fdd3da5f61c6..ac1581074664 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFormat.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFormat.java @@ -9,7 +9,7 @@ import org.hibernate.query.SemanticException; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -43,7 +43,7 @@ public class SqmFormat extends SqmLiteral { public SqmFormat( String value, - SqmBindable inherentType, + SqmBindableType inherentType, NodeBuilder nodeBuilder) { super(value, inherentType, nodeBuilder); if (!FORMAT.matcher(value).matches()) { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFunction.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFunction.java index 8d2692587602..c9bca8dc48fe 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFunction.java @@ -11,7 +11,7 @@ import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.function.SqmFunctionDescriptor; import org.hibernate.query.sqm.sql.SqmToSqlAstConverter; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -39,7 +39,7 @@ public abstract class SqmFunction extends AbstractSqmExpression public SqmFunction( String functionName, SqmFunctionDescriptor functionDescriptor, - @Nullable SqmBindable type, + @Nullable SqmBindableType type, List> arguments, NodeBuilder criteriaBuilder) { super( type, criteriaBuilder ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonNullBehavior.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonNullBehavior.java index 4e6075592cf4..c91a27dd0c6e 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonNullBehavior.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonNullBehavior.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.SqmTypedNode; @@ -30,7 +30,7 @@ public enum SqmJsonNullBehavior implements SqmTypedNode { NULL; @Override - public @Nullable SqmBindable getNodeType() { + public @Nullable SqmBindableType getNodeType() { return null; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonObjectAggUniqueKeysBehavior.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonObjectAggUniqueKeysBehavior.java index a0c55475445f..4d07c6944b62 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonObjectAggUniqueKeysBehavior.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonObjectAggUniqueKeysBehavior.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.SqmTypedNode; @@ -30,7 +30,7 @@ public enum SqmJsonObjectAggUniqueKeysBehavior implements SqmTypedNode { WITHOUT; @Override - public @Nullable SqmBindable getNodeType() { + public @Nullable SqmBindableType getNodeType() { return null; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonTableFunction.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonTableFunction.java index 42170d1622b3..1f1babb8d689 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonTableFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmJsonTableFunction.java @@ -14,7 +14,7 @@ import org.hibernate.query.criteria.JpaJsonTableColumnsNode; import org.hibernate.query.criteria.JpaJsonTableFunction; import org.hibernate.query.criteria.JpaJsonValueNode; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tuple.internal.AnonymousTupleType; import org.hibernate.query.sqm.NodeBuilder; @@ -962,7 +962,7 @@ public AnonymousTupleType createTupleType() { if ( table.columnNames.isEmpty() ) { throw new IllegalArgumentException( "Couldn't determine types of columns of function 'json_table'" ); } - final SqmBindable[] componentTypes = new SqmBindable[table.columnNames.size()]; + final SqmBindableType[] componentTypes = new SqmBindableType[table.columnNames.size()]; final String[] componentNames = new String[table.columnNames.size()]; int result = populateTupleType( 0, componentNames, componentTypes ); @@ -982,7 +982,7 @@ public Columns copy(SqmCopyContext context) { } @Override - public @Nullable SqmBindable getNodeType() { + public @Nullable SqmBindableType getNodeType() { return null; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteral.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteral.java index adc504be2824..920b995b2f59 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteral.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteral.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.type.descriptor.java.JavaType; @@ -29,7 +29,7 @@ public class SqmLiteral extends AbstractSqmExpression { private final T value; - public SqmLiteral(T value, SqmBindable inherentType, NodeBuilder nodeBuilder) { + public SqmLiteral(T value, SqmBindableType inherentType, NodeBuilder nodeBuilder) { super( inherentType, nodeBuilder ); assert value != null; assert inherentType == null @@ -37,7 +37,7 @@ public SqmLiteral(T value, SqmBindable inherentType, NodeBuilder node this.value = value; } - protected SqmLiteral(SqmBindable inherentType, NodeBuilder nodeBuilder) { + protected SqmLiteral(SqmBindableType inherentType, NodeBuilder nodeBuilder) { super( inherentType, nodeBuilder ); this.value = null; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralEmbeddableType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralEmbeddableType.java index 0524650628c0..82b64be163a7 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralEmbeddableType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralEmbeddableType.java @@ -10,7 +10,7 @@ import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.domain.SqmPath; @@ -54,7 +54,7 @@ public SqmLiteralEmbeddableType copy(SqmCopyContext context) { } @Override - public void internalApplyInferableType(SqmBindable type) { + public void internalApplyInferableType(SqmBindableType type) { } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralEntityType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralEntityType.java index 4a4e8a411495..1f78876db742 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralEntityType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralEntityType.java @@ -9,7 +9,7 @@ import org.hibernate.query.hql.spi.SqmCreationState; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.domain.SqmPath; @@ -56,7 +56,7 @@ public SqmEntityDomainType getNodeType() { } @Override - public void internalApplyInferableType(SqmBindable type) { + public void internalApplyInferableType(SqmBindableType type) { } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralNull.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralNull.java index 3d9d9f0d5081..1c4d09559843 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralNull.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmLiteralNull.java @@ -5,7 +5,7 @@ package org.hibernate.query.sqm.tree.expression; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SemanticQueryWalker; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -17,10 +17,10 @@ public class SqmLiteralNull extends SqmLiteral { public SqmLiteralNull(NodeBuilder nodeBuilder) { //noinspection unchecked - this( (SqmBindable) NullSqmExpressible.NULL_SQM_EXPRESSIBLE, nodeBuilder ); + this( (SqmBindableType) NullSqmExpressible.NULL_SQM_EXPRESSIBLE, nodeBuilder ); } - public SqmLiteralNull(SqmBindable expressibleType, NodeBuilder nodeBuilder) { + public SqmLiteralNull(SqmBindableType expressibleType, NodeBuilder nodeBuilder) { super( expressibleType, nodeBuilder ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmModifiedSubQueryExpression.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmModifiedSubQueryExpression.java index 13c41dbbcda1..6d79c961d14c 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmModifiedSubQueryExpression.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmModifiedSubQueryExpression.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.select.SqmSubQuery; @@ -42,7 +42,7 @@ public SqmModifiedSubQueryExpression( public SqmModifiedSubQueryExpression( SqmSubQuery subQuery, Modifier modifier, - SqmBindable resultType, + SqmBindableType resultType, NodeBuilder builder) { super( resultType, builder ); this.subQuery = subQuery; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmNamedParameter.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmNamedParameter.java index 014393dbceea..454fab3642b8 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmNamedParameter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmNamedParameter.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -25,7 +25,7 @@ public SqmNamedParameter(String name, boolean canBeMultiValued, NodeBuilder node public SqmNamedParameter( String name, boolean canBeMultiValued, - SqmBindable inherentType, + SqmBindableType inherentType, NodeBuilder nodeBuilder) { super( canBeMultiValued, inherentType, nodeBuilder ); this.name = name; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmOver.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmOver.java index cda4c46acd90..66187bd13b8d 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmOver.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmOver.java @@ -10,7 +10,7 @@ import org.hibernate.query.common.FrameKind; import org.hibernate.query.common.FrameMode; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.select.SqmSortSpecification; @@ -87,7 +87,7 @@ public SqmWindow getWindow() { } @Override - public @Nullable SqmBindable getNodeType() { + public @Nullable SqmBindableType getNodeType() { return expression.getNodeType(); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmParameterizedEntityType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmParameterizedEntityType.java index 1c995217fe73..90f3f4cb9e6d 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmParameterizedEntityType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmParameterizedEntityType.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.select.SqmSelectableNode; @@ -46,7 +46,7 @@ public SqmParameterizedEntityType copy(SqmCopyContext context) { } @Override - public void internalApplyInferableType(SqmBindable type) { + public void internalApplyInferableType(SqmBindableType type) { setExpressibleType( type ); discriminatorSource.applyInferableType( type ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmPositionalParameter.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmPositionalParameter.java index 6a9da76f1a80..0990a6f18452 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmPositionalParameter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmPositionalParameter.java @@ -6,7 +6,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -28,7 +28,7 @@ public SqmPositionalParameter( public SqmPositionalParameter( int position, boolean canBeMultiValued, - SqmBindable expressibleType, + SqmBindableType expressibleType, NodeBuilder nodeBuilder) { super( canBeMultiValued, expressibleType, nodeBuilder ); this.position = position; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmSelfRenderingExpression.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmSelfRenderingExpression.java index 83170065c388..bffb09534ed2 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmSelfRenderingExpression.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmSelfRenderingExpression.java @@ -8,7 +8,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.sql.ast.tree.expression.Expression; @@ -21,7 +21,7 @@ public class SqmSelfRenderingExpression extends AbstractSqmExpression { public SqmSelfRenderingExpression( Function renderer, - SqmBindable type, + SqmBindableType type, NodeBuilder criteriaBuilder) { super( type, criteriaBuilder ); this.renderer = renderer; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmTrimSpecification.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmTrimSpecification.java index 0a8284deb9c4..caf2a5d7abdd 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmTrimSpecification.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmTrimSpecification.java @@ -4,7 +4,7 @@ */ package org.hibernate.query.sqm.tree.expression; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.TrimSpec; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; @@ -47,7 +47,7 @@ public String asLoggableText() { } @Override - public SqmBindable getNodeType() { + public SqmBindableType getNodeType() { return null; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmTuple.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmTuple.java index 161152541859..b82aa631c661 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmTuple.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmTuple.java @@ -13,7 +13,7 @@ import org.hibernate.query.criteria.JpaSelection; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.select.SqmJpaCompoundSelection; @@ -37,7 +37,7 @@ public SqmTuple(NodeBuilder nodeBuilder, SqmExpression... groupedExpressions) this( Arrays.asList( groupedExpressions ), nodeBuilder ); } - public SqmTuple(NodeBuilder nodeBuilder, SqmBindable type, SqmExpression... groupedExpressions) { + public SqmTuple(NodeBuilder nodeBuilder, SqmBindableType type, SqmExpression... groupedExpressions) { this( Arrays.asList( groupedExpressions ), type, nodeBuilder ); } @@ -45,7 +45,7 @@ public SqmTuple(List> groupedExpressions, NodeBuilder nodeBuild this( groupedExpressions, null, nodeBuilder ); } - public SqmTuple(List> groupedExpressions, SqmBindable type, NodeBuilder nodeBuilder) { + public SqmTuple(List> groupedExpressions, SqmBindableType type, NodeBuilder nodeBuilder) { super( type, nodeBuilder ); if ( groupedExpressions.isEmpty() ) { throw new SemanticException( "Tuple constructor must have at least one element" ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmUnaryOperation.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmUnaryOperation.java index f0ba646d71b1..ddc2b7cdc001 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmUnaryOperation.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmUnaryOperation.java @@ -5,7 +5,7 @@ package org.hibernate.query.sqm.tree.expression; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.UnaryArithmeticOperator; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -31,7 +31,7 @@ public SqmUnaryOperation(UnaryArithmeticOperator operation, SqmExpression ope public SqmUnaryOperation( UnaryArithmeticOperator operation, SqmExpression operand, - SqmBindable inherentType) { + SqmBindableType inherentType) { super( inherentType, operand.nodeBuilder() ); this.operation = operation; this.operand = operand; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmXmlAttributesExpression.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmXmlAttributesExpression.java index c16b31f911be..a4ce67750b06 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmXmlAttributesExpression.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmXmlAttributesExpression.java @@ -10,7 +10,7 @@ import org.hibernate.Incubating; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.SqmTypedNode; @@ -48,7 +48,7 @@ public Map> getAttributes() { } @Override - public @Nullable SqmBindable getNodeType() { + public @Nullable SqmBindableType getNodeType() { return null; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmXmlTableFunction.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmXmlTableFunction.java index 57b2717d4bd6..55dde0def8a5 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmXmlTableFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmXmlTableFunction.java @@ -10,7 +10,7 @@ import org.hibernate.query.criteria.JpaCastTarget; import org.hibernate.query.criteria.JpaXmlTableColumnNode; import org.hibernate.query.criteria.JpaXmlTableFunction; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tuple.internal.AnonymousTupleType; import org.hibernate.query.sqm.NodeBuilder; @@ -416,7 +416,7 @@ public AnonymousTupleType createTupleType() { if ( columnDefinitions.isEmpty() ) { throw new IllegalArgumentException( "Couldn't determine types of columns of function 'xmltable'" ); } - final SqmBindable[] componentTypes = new SqmBindable[columnDefinitions.size()]; + final SqmBindableType[] componentTypes = new SqmBindableType[columnDefinitions.size()]; final String[] componentNames = new String[columnDefinitions.size()]; int offset = 0; for ( ColumnDefinition columnDefinition : columnDefinitions ) { @@ -457,7 +457,7 @@ public void appendHqlString(StringBuilder hql, SqmRenderContext context) { } @Override - public @Nullable SqmBindable getNodeType() { + public @Nullable SqmBindableType getNodeType() { return null; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/ValueBindJpaCriteriaParameter.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/ValueBindJpaCriteriaParameter.java index ab4e27d4d44e..15aa63e71d63 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/ValueBindJpaCriteriaParameter.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/ValueBindJpaCriteriaParameter.java @@ -6,7 +6,7 @@ import org.hibernate.type.BindableType; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -21,7 +21,7 @@ public class ValueBindJpaCriteriaParameter extends JpaCriteriaParameter { public ValueBindJpaCriteriaParameter(BindableType type, T value, NodeBuilder nodeBuilder) { super( null, type, false, nodeBuilder ); assert value == null || type == null - || ( type instanceof SqmBindable bindable + || ( type instanceof SqmBindableType bindable // TODO: why does SqmExpressible.getJavaType() return an apparently-wrong type? ? bindable.getExpressibleJavaType().isInstance( value ) : type.getJavaType().isInstance( value ) ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/AbstractJpaSelection.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/AbstractJpaSelection.java index 239fdcab39b3..c59fb6f8cf93 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/AbstractJpaSelection.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/AbstractJpaSelection.java @@ -8,7 +8,7 @@ import org.hibernate.query.criteria.JpaSelection; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.select.SqmSelectableNode; import org.checkerframework.checker.nullness.qual.Nullable; @@ -21,7 +21,7 @@ public abstract class AbstractJpaSelection extends AbstractJpaTupleElement implements SqmSelectableNode, JpaSelection { - protected AbstractJpaSelection(@Nullable SqmBindable sqmExpressible, NodeBuilder criteriaBuilder) { + protected AbstractJpaSelection(@Nullable SqmBindableType sqmExpressible, NodeBuilder criteriaBuilder) { super( sqmExpressible, criteriaBuilder ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/AbstractJpaTupleElement.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/AbstractJpaTupleElement.java index 2931ae2eb621..391d1d83d08a 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/AbstractJpaTupleElement.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/AbstractJpaTupleElement.java @@ -6,7 +6,7 @@ import org.hibernate.query.criteria.JpaTupleElement; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.AbstractSqmNode; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmVisitableNode; @@ -22,10 +22,10 @@ public abstract class AbstractJpaTupleElement extends AbstractSqmNode implements SqmVisitableNode, JpaTupleElement { - private @Nullable SqmBindable expressibleType; + private @Nullable SqmBindableType expressibleType; private @Nullable String alias; - protected AbstractJpaTupleElement(@Nullable SqmBindable expressibleType, NodeBuilder criteriaBuilder) { + protected AbstractJpaTupleElement(@Nullable SqmBindableType expressibleType, NodeBuilder criteriaBuilder) { super( criteriaBuilder ); setExpressibleType( expressibleType ); } @@ -46,13 +46,13 @@ protected void setAlias(@Nullable String alias) { this.alias = alias; } - public @Nullable SqmBindable getNodeType() { + public @Nullable SqmBindableType getNodeType() { return expressibleType; } - protected final void setExpressibleType(@Nullable SqmBindable expressibleType) { + protected final void setExpressibleType(@Nullable SqmBindableType expressibleType) { //noinspection unchecked - this.expressibleType = (SqmBindable) expressibleType; + this.expressibleType = (SqmBindableType) expressibleType; } } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/ParameterCollector.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/ParameterCollector.java index ac8a0d48e219..ea302c20026a 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/ParameterCollector.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/jpa/ParameterCollector.java @@ -10,7 +10,7 @@ import java.util.function.Consumer; import org.hibernate.type.BindableType; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.spi.BaseSemanticQueryWalker; import org.hibernate.query.sqm.tree.SqmExpressibleAccessor; @@ -118,7 +118,7 @@ public Object visitSetReturningFunction(SqmSetReturningFunction sqmFunction) private BindableType getInferredParameterType(JpaCriteriaParameter expression) { BindableType parameterType = null; if ( inferenceBasis != null ) { - final SqmBindable expressible = inferenceBasis.getExpressible(); + final SqmBindableType expressible = inferenceBasis.getExpressible(); if ( expressible != null ) { parameterType = expressible; } @@ -167,7 +167,7 @@ public Object visitSimpleCaseExpression(SqmCaseSimple expression) { withTypeInference( () -> { for ( var whenFragment : expression.getWhenFragments() ) { - final SqmBindable resolved = whenFragment.getCheckValue().getExpressible(); + final SqmBindableType resolved = whenFragment.getCheckValue().getExpressible(); if ( resolved != null ) { return resolved; } @@ -254,7 +254,7 @@ private SqmExpressibleAccessor highestPrecedence(SqmExpressibleAccessor ty } private SqmExpressibleAccessor toExpressibleAccessor(SqmExpression expression) { - final SqmBindable expressible = expression.getExpressible(); + final SqmBindableType expressible = expression.getExpressible(); return expressible == null ? null : () -> expressible; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/AbstractNegatableSqmPredicate.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/AbstractNegatableSqmPredicate.java index a6c411c1c53b..1f0812db78a3 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/AbstractNegatableSqmPredicate.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/AbstractNegatableSqmPredicate.java @@ -5,7 +5,7 @@ package org.hibernate.query.sqm.tree.predicate; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; /** * @author Steve Ebersole @@ -21,7 +21,7 @@ public AbstractNegatableSqmPredicate(boolean negated, NodeBuilder nodeBuilder) { this( nodeBuilder.getBooleanType(), negated, nodeBuilder ); } - public AbstractNegatableSqmPredicate(SqmBindable type, boolean negated, NodeBuilder nodeBuilder) { + public AbstractNegatableSqmPredicate(SqmBindableType type, boolean negated, NodeBuilder nodeBuilder) { super( type, nodeBuilder ); this.negated = negated; } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/AbstractSqmPredicate.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/AbstractSqmPredicate.java index a4584e4ef237..5ed4b6ce7a5d 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/AbstractSqmPredicate.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/AbstractSqmPredicate.java @@ -8,7 +8,7 @@ import java.util.List; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.expression.AbstractSqmExpression; import jakarta.persistence.criteria.Expression; @@ -18,7 +18,7 @@ */ public abstract class AbstractSqmPredicate extends AbstractSqmExpression implements SqmPredicate { - public AbstractSqmPredicate(SqmBindable type, NodeBuilder criteriaBuilder) { + public AbstractSqmPredicate(SqmBindableType type, NodeBuilder criteriaBuilder) { super( type, criteriaBuilder ); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmBetweenPredicate.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmBetweenPredicate.java index 4fcfef59f9fd..0b8a683656dd 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmBetweenPredicate.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmBetweenPredicate.java @@ -7,7 +7,7 @@ import org.hibernate.query.internal.QueryHelper; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.expression.SqmExpression; @@ -36,7 +36,7 @@ public SqmBetweenPredicate( assertComparable( expression, lowerBound, nodeBuilder ); assertComparable( expression, upperBound, nodeBuilder ); - final SqmBindable expressibleType = QueryHelper.highestPrecedenceType( + final SqmBindableType expressibleType = QueryHelper.highestPrecedenceType( expression.getExpressible(), lowerBound.getExpressible(), upperBound.getExpressible() diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmComparisonPredicate.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmComparisonPredicate.java index 7c74c4d55ad5..d0b9a22f5434 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmComparisonPredicate.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmComparisonPredicate.java @@ -7,7 +7,7 @@ import org.hibernate.query.sqm.ComparisonOperator; import org.hibernate.query.internal.QueryHelper; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SemanticQueryWalker; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -44,7 +44,7 @@ private SqmComparisonPredicate( assertComparable( leftHandExpression, rightHandExpression, nodeBuilder ); - final SqmBindable expressibleType = QueryHelper.highestPrecedenceType( + final SqmBindableType expressibleType = QueryHelper.highestPrecedenceType( leftHandExpression.getExpressible(), rightHandExpression.getExpressible() ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmInSubQueryPredicate.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmInSubQueryPredicate.java index 951aa2e75e3c..72c851c4549c 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmInSubQueryPredicate.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmInSubQueryPredicate.java @@ -7,7 +7,7 @@ import org.hibernate.query.criteria.JpaExpression; import org.hibernate.query.internal.QueryHelper; import org.hibernate.query.sqm.NodeBuilder; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SemanticQueryWalker; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -43,7 +43,7 @@ public SqmInSubQueryPredicate( assertComparable( testExpression, subQueryExpression, nodeBuilder ); - final SqmBindable expressibleType = QueryHelper.highestPrecedenceType2( + final SqmBindableType expressibleType = QueryHelper.highestPrecedenceType2( testExpression.getExpressible(), subQueryExpression.getExpressible() ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmJunctionPredicate.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmJunctionPredicate.java index c9b102b010e4..e7991b2e0a46 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmJunctionPredicate.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmJunctionPredicate.java @@ -9,7 +9,7 @@ import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import jakarta.persistence.criteria.Expression; @@ -24,7 +24,7 @@ public class SqmJunctionPredicate extends AbstractSqmPredicate { public SqmJunctionPredicate( BooleanOperator booleanOperator, - SqmBindable expressible, + SqmBindableType expressible, NodeBuilder nodeBuilder) { super( expressible, nodeBuilder ); this.booleanOperator = booleanOperator; diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmLikePredicate.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmLikePredicate.java index e0550e92607f..a105e15a4ebc 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmLikePredicate.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmLikePredicate.java @@ -7,7 +7,7 @@ import org.hibernate.query.internal.QueryHelper; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.expression.SqmExpression; @@ -52,7 +52,7 @@ public SqmLikePredicate( this.pattern = pattern; this.escapeCharacter = escapeCharacter; this.isCaseSensitive = isCaseSensitive; - final SqmBindable expressibleType = QueryHelper.highestPrecedenceType( + final SqmBindableType expressibleType = QueryHelper.highestPrecedenceType( matchExpression.getExpressible(), pattern.getExpressible() ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmMemberOfPredicate.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmMemberOfPredicate.java index bb41dc95de71..6c0412b2ee82 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmMemberOfPredicate.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/predicate/SqmMemberOfPredicate.java @@ -8,7 +8,7 @@ import org.hibernate.query.SemanticException; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; import org.hibernate.query.sqm.tree.domain.SqmPluralValuedSimplePath; @@ -38,7 +38,7 @@ public SqmMemberOfPredicate( this.leftHandExpression = leftHandExpression; final SimpleDomainType elementType = pluralPath.getPluralAttribute().getElementType(); - final SqmBindable simpleDomainType = nodeBuilder.resolveExpressible( elementType ); + final SqmBindableType simpleDomainType = nodeBuilder.resolveExpressible( elementType ); if ( !areTypesComparable( leftHandExpression.getNodeType(), simpleDomainType, nodeBuilder ) ) { throw new SemanticException( diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmAliasedNode.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmAliasedNode.java index 292bc846f70e..13346e7277de 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmAliasedNode.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmAliasedNode.java @@ -4,7 +4,7 @@ */ package org.hibernate.query.sqm.tree.select; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmTypedNode; import org.hibernate.query.sqm.sql.internal.DomainResultProducer; @@ -25,12 +25,12 @@ public interface SqmAliasedNode extends SqmTypedNode { String getAlias(); @Override - default SqmBindable getNodeType() { + default SqmBindableType getNodeType() { return getSelectableNode().getNodeType(); } @Override - default SqmBindable getExpressible() { + default SqmBindableType getExpressible() { return getSelectableNode().getExpressible(); } } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiation.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiation.java index 181f9048d751..4428f7744c2c 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiation.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmDynamicInstantiation.java @@ -14,7 +14,7 @@ import org.hibernate.query.criteria.JpaCompoundSelection; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmExpressible; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -129,7 +129,7 @@ private SqmDynamicInstantiation( } private SqmDynamicInstantiation( - SqmBindable sqmExpressible, + SqmBindableType sqmExpressible, NodeBuilder criteriaBuilder, SqmDynamicInstantiationTarget instantiationTarget, List> arguments) { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmSubQuery.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmSubQuery.java index 6baeac3f84d1..d652376d4b49 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmSubQuery.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmSubQuery.java @@ -27,7 +27,7 @@ import org.hibernate.query.common.FetchClauseType; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SemanticQueryWalker; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.tree.SqmCopyContext; import org.hibernate.query.sqm.tree.SqmQuery; import org.hibernate.query.sqm.tree.SqmRenderContext; @@ -85,7 +85,7 @@ public class SqmSubQuery extends AbstractSqmSelectQuery implements SqmSelectQuery, JpaSubQuery, SqmExpression { private final SqmQuery parent; - private SqmBindable expressibleType; + private SqmBindableType expressibleType; private String alias; public SqmSubQuery( @@ -140,7 +140,7 @@ private SqmSubQuery( Map> cteStatements, Class resultType, SqmQuery parent, - SqmBindable expressibleType, + SqmBindableType expressibleType, String alias) { super( builder, cteStatements, resultType ); this.parent = parent; @@ -635,14 +635,14 @@ public SqmInPredicate in(Expression> values) { } @Override - public @Nullable SqmBindable getNodeType() { + public @Nullable SqmBindableType getNodeType() { return expressibleType; } @Override - public void applyInferableType(@Nullable SqmBindable type) { + public void applyInferableType(@Nullable SqmBindableType type) { //noinspection unchecked - expressibleType = (SqmBindable) type; + expressibleType = (SqmBindableType) type; } private void applyInferableType(Class type) { diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/TupleType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/TupleType.java index 963e404d3a72..16101c2cd740 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/TupleType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/TupleType.java @@ -5,7 +5,7 @@ package org.hibernate.query.sqm.tuple; import org.hibernate.metamodel.model.domain.ReturnableType; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import java.util.List; @@ -20,6 +20,6 @@ public interface TupleType extends ReturnableType { String getComponentName(int index); List getComponentNames(); - SqmBindable get(int index); - SqmBindable get(String componentName); + SqmBindableType get(int index); + SqmBindableType get(String componentName); } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java index 1be741a5aa6e..819d0be474dc 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/tuple/internal/AnonymousTupleType.java @@ -18,7 +18,7 @@ import org.hibernate.metamodel.mapping.internal.SqlTypedMappingImpl; import org.hibernate.metamodel.model.domain.BasicDomainType; import org.hibernate.metamodel.model.domain.SimpleDomainType; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.query.sqm.SqmPathSource; import org.hibernate.query.sqm.tree.domain.SqmDomainType; import org.hibernate.query.sqm.tree.domain.SqmPluralPersistentAttribute; @@ -51,7 +51,7 @@ public class AnonymousTupleType private final JavaType javaTypeDescriptor; private final @Nullable NavigablePath[] componentSourcePaths; - private final SqmBindable[] expressibles; + private final SqmBindableType[] expressibles; private final String[] componentNames; private final Map componentIndexMap; @@ -60,7 +60,7 @@ public AnonymousTupleType(SqmSubQuery subQuery) { } public AnonymousTupleType(SqmSelectableNode[] components) { - expressibles = new SqmBindable[components.length]; + expressibles = new SqmBindableType[components.length]; componentSourcePaths = new NavigablePath[components.length]; for ( int i = 0; i < components.length; i++ ) { expressibles[i] = components[i].getNodeType(); @@ -84,7 +84,7 @@ public AnonymousTupleType(SqmSelectableNode[] components) { } } - public AnonymousTupleType(SqmBindable[] expressibles, String[] componentNames) { + public AnonymousTupleType(SqmBindableType[] expressibles, String[] componentNames) { this.expressibles = expressibles; this.componentNames = componentNames; @@ -178,12 +178,12 @@ public List getComponentNames() { } @Override - public SqmBindable get(int index) { + public SqmBindableType get(int index) { return expressibles[index]; } @Override - public SqmBindable get(String componentName) { + public SqmBindableType get(String componentName) { final Integer index = componentIndexMap.get( componentName ); return index == null ? null : expressibles[index]; } diff --git a/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java b/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java index 25bbd0ec6843..3e202366a9ee 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java +++ b/hibernate-core/src/main/java/org/hibernate/type/BasicTypeReference.java @@ -6,7 +6,7 @@ import java.io.Serializable; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.type.descriptor.converter.spi.BasicValueConverter; import static jakarta.persistence.metamodel.Type.PersistenceType.BASIC; @@ -88,7 +88,7 @@ public BasicTypeReference asImmutable() { } @Override - public SqmBindable resolveExpressible(BindingContext bindingContext) { + public SqmBindableType resolveExpressible(BindingContext bindingContext) { return bindingContext.getTypeConfiguration().getBasicTypeRegistry().resolve( this ); } } diff --git a/hibernate-core/src/main/java/org/hibernate/type/BindableType.java b/hibernate-core/src/main/java/org/hibernate/type/BindableType.java index 37bd918e8474..a554ba76b5a7 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/BindableType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/BindableType.java @@ -7,7 +7,7 @@ import jakarta.persistence.metamodel.Type; import org.hibernate.Incubating; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; /** * Represents a type of argument which can be bound to a positional or named @@ -31,7 +31,7 @@ @Incubating public interface BindableType extends Type { /** - * Resolve this parameter type to the corresponding {@link SqmBindable}. + * Resolve this parameter type to the corresponding {@link SqmBindableType}. */ - SqmBindable resolveExpressible(BindingContext bindingContext); + SqmBindableType resolveExpressible(BindingContext bindingContext); } diff --git a/hibernate-core/src/main/java/org/hibernate/type/BindingContext.java b/hibernate-core/src/main/java/org/hibernate/type/BindingContext.java index b99924f99da0..346d96a58cfc 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/BindingContext.java +++ b/hibernate-core/src/main/java/org/hibernate/type/BindingContext.java @@ -9,7 +9,7 @@ import org.hibernate.Incubating; import org.hibernate.metamodel.MappingMetamodel; import org.hibernate.metamodel.model.domain.JpaMetamodel; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.type.spi.TypeConfiguration; /** @@ -21,7 +21,7 @@ * @since 7.0 * * @see BindableType#resolveExpressible(BindingContext) - * @see org.hibernate.query.sqm.SqmBindable#resolveExpressible(BindingContext) + * @see SqmBindableType#resolveExpressible(BindingContext) * @see org.hibernate.query.sqm.produce.function.ArgumentsValidator#validate(java.util.List, String, BindingContext) * @see org.hibernate.query.sqm.internal.TypecheckUtil */ @@ -34,16 +34,16 @@ public interface BindingContext { TypeConfiguration getTypeConfiguration(); /** - * Resolve this parameter type to the corresponding {@link SqmBindable}. + * Resolve this parameter type to the corresponding {@link SqmBindableType}. * * @param the type of the parameter * @param bindableType the {@link BindableType} representing the type of the parameter, * which may be null if the type is not known - * @return the corresponding {@link SqmBindable}, or null if the argument was null + * @return the corresponding {@link SqmBindableType}, or null if the argument was null * * @since 7.0 */ - default SqmBindable resolveExpressible(Type bindableType) { + default SqmBindableType resolveExpressible(Type bindableType) { if ( bindableType == null ) { return null; } diff --git a/hibernate-core/src/main/java/org/hibernate/type/spi/TypeConfiguration.java b/hibernate-core/src/main/java/org/hibernate/type/spi/TypeConfiguration.java index 5614af894423..231abcc41e18 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/spi/TypeConfiguration.java +++ b/hibernate-core/src/main/java/org/hibernate/type/spi/TypeConfiguration.java @@ -37,7 +37,7 @@ import org.hibernate.Internal; import org.hibernate.SessionFactory; import org.hibernate.SessionFactoryObserver; -import org.hibernate.query.sqm.SqmBindable; +import org.hibernate.query.sqm.SqmBindableType; import org.hibernate.type.TimeZoneStorageStrategy; import org.hibernate.boot.cfgxml.spi.CfgXmlAccessService; import org.hibernate.boot.registry.classloading.spi.ClassLoaderService; @@ -639,11 +639,11 @@ private Class entityClassForEntityName(String entityName) { private final ConcurrentMap arrayTuples = new ConcurrentHashMap<>(); - public SqmBindable resolveTupleType(List> typedNodes) { - final SqmBindable[] components = new SqmBindable[typedNodes.size()]; + public SqmBindableType resolveTupleType(List> typedNodes) { + final SqmBindableType[] components = new SqmBindableType[typedNodes.size()]; for ( int i = 0; i < typedNodes.size(); i++ ) { final SqmTypedNode tupleElement = typedNodes.get(i); - final SqmBindable sqmExpressible = tupleElement.getNodeType(); + final SqmBindableType sqmExpressible = tupleElement.getNodeType(); // keep null value for Named Parameters if ( tupleElement instanceof SqmParameter && sqmExpressible == null ) { components[i] = QueryParameterJavaObjectType.INSTANCE; @@ -659,9 +659,9 @@ public SqmBindable resolveTupleType(List> typedNode } private static class ArrayCacheKey { - final SqmBindable[] components; + final SqmBindableType[] components; - public ArrayCacheKey(SqmBindable[] components) { + public ArrayCacheKey(SqmBindableType[] components) { this.components = components; }