Skip to content

Commit 5fa4195

Browse files
committed
HHH-19449 SqmExpressible should not extend BindableType
1 parent 2940f5b commit 5fa4195

File tree

126 files changed

+481
-371
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

126 files changed

+481
-371
lines changed

hibernate-core/src/main/java/org/hibernate/dialect/function/GenerateSeriesSetReturningFunctionTypeResolver.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.hibernate.metamodel.mapping.SelectablePath;
1414
import org.hibernate.metamodel.mapping.SqlTypedMapping;
1515
import org.hibernate.metamodel.mapping.internal.SelectableMappingImpl;
16+
import org.hibernate.query.sqm.SqmBindable;
1617
import org.hibernate.query.sqm.tree.domain.SqmDomainType;
1718
import org.hibernate.query.sqm.tuple.internal.AnonymousTupleType;
1819
import org.hibernate.query.sqm.SqmExpressible;
@@ -53,7 +54,7 @@ public AnonymousTupleType<?> resolveTupleType(List<? extends SqmTypedNode<?>> ar
5354
throw new IllegalArgumentException( "Couldn't determine types of arguments to function 'generate_series'" );
5455
}
5556

56-
final SqmExpressible<?>[] componentTypes = new SqmExpressible<?>[]{ type, typeConfiguration.getBasicTypeForJavaType( Long.class ) };
57+
final SqmBindable<?>[] componentTypes = new SqmBindable<?>[]{ type, typeConfiguration.getBasicTypeForJavaType( Long.class ) };
5758
final String[] componentNames = new String[]{ CollectionPart.Nature.ELEMENT.getName(), CollectionPart.Nature.INDEX.getName() };
5859
return new AnonymousTupleType<>( componentTypes, componentNames );
5960
}

hibernate-core/src/main/java/org/hibernate/dialect/function/UnnestSetReturningFunctionTypeResolver.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.hibernate.metamodel.mapping.SelectablePath;
1818
import org.hibernate.metamodel.mapping.SqlTypedMapping;
1919
import org.hibernate.metamodel.mapping.internal.SelectableMappingImpl;
20+
import org.hibernate.query.sqm.SqmBindable;
2021
import org.hibernate.query.sqm.tuple.internal.AnonymousTupleType;
2122
import org.hibernate.query.sqm.SqmExpressible;
2223
import org.hibernate.query.sqm.produce.function.SetReturningFunctionTypeResolver;
@@ -55,7 +56,7 @@ public AnonymousTupleType<?> resolveTupleType(List<? extends SqmTypedNode<?>> ar
5556
}
5657

5758
final BasicType<?> elementType = pluralType.getElementType();
58-
final SqmExpressible<?>[] componentTypes;
59+
final SqmBindable<?>[] componentTypes;
5960
final String[] componentNames;
6061
if ( elementType.getJdbcType() instanceof AggregateJdbcType aggregateJdbcType
6162
&& aggregateJdbcType.getEmbeddableMappingType() != null ) {
@@ -75,7 +76,7 @@ public AnonymousTupleType<?> resolveTupleType(List<? extends SqmTypedNode<?>> ar
7576
componentNames[index] = CollectionPart.Nature.INDEX.getName();
7677
}
7778
else {
78-
componentTypes = new SqmExpressible<?>[]{ elementType, typeConfiguration.getBasicTypeForJavaType( Long.class ) };
79+
componentTypes = new SqmBindable<?>[]{ elementType, typeConfiguration.getBasicTypeForJavaType( Long.class ) };
7980
componentNames = new String[]{ CollectionPart.Nature.ELEMENT.getName(), CollectionPart.Nature.INDEX.getName() };
8081
}
8182
return new AnonymousTupleType<>( componentTypes, componentNames );
@@ -208,17 +209,17 @@ public SelectableMapping[] resolveFunctionReturnType(
208209
return returnType;
209210
}
210211

211-
private static SqmExpressible<?>[] determineComponentTypes(EmbeddableMappingType embeddableMappingType) {
212+
private static SqmBindable<?>[] determineComponentTypes(EmbeddableMappingType embeddableMappingType) {
212213
final int numberOfAttributeMappings = embeddableMappingType.getNumberOfAttributeMappings();
213-
final ArrayList<SqmExpressible<?>> expressibles = new ArrayList<>( numberOfAttributeMappings + 1 );
214+
final ArrayList<SqmBindable<?>> expressibles = new ArrayList<>( numberOfAttributeMappings + 1 );
214215

215216
for ( int i = 0; i < numberOfAttributeMappings; i++ ) {
216217
final AttributeMapping attributeMapping = embeddableMappingType.getAttributeMapping( i );
217218
final MappingType mappedType = attributeMapping.getMappedType();
218-
if ( mappedType instanceof SqmExpressible<?> sqmExpressible ) {
219+
if ( mappedType instanceof SqmBindable<?> sqmExpressible ) {
219220
expressibles.add( sqmExpressible );
220221
}
221222
}
222-
return expressibles.toArray( new SqmExpressible<?>[expressibles.size() + 1] );
223+
return expressibles.toArray( new SqmBindable<?>[expressibles.size() + 1] );
223224
}
224225
}

hibernate-core/src/main/java/org/hibernate/dialect/function/array/ArrayConstructorFunction.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import org.hibernate.metamodel.mapping.JdbcMappingContainer;
1010
import org.hibernate.metamodel.model.domain.ReturnableType;
1111
import org.hibernate.query.spi.BindingContext;
12-
import org.hibernate.query.sqm.SqmExpressible;
12+
import org.hibernate.query.sqm.SqmBindable;
1313
import org.hibernate.query.sqm.function.AbstractSqmSelfRenderingFunctionDescriptor;
1414
import org.hibernate.query.sqm.produce.function.ArgumentsValidator;
1515
import org.hibernate.query.sqm.produce.function.FunctionArgumentException;
@@ -77,9 +77,9 @@ public void validate(
7777
String functionName,
7878
BindingContext bindingContext) {
7979
final int size = arguments.size();
80-
SqmExpressible<?> firstType = null;
80+
SqmBindable<?> firstType = null;
8181
for ( int i = 0; i < size; i++ ) {
82-
final SqmExpressible<?> argument = arguments.get( i ).getExpressible();
82+
final SqmBindable<?> argument = arguments.get( i ).getExpressible();
8383
if ( firstType == null ) {
8484
firstType = argument;
8585
}

hibernate-core/src/main/java/org/hibernate/metamodel/mapping/DiscriminatorConverter.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,18 +66,18 @@ public O toDomainValue(R relationalForm) {
6666

6767
@Override
6868
public R toRelationalValue(O domainForm) {
69-
assert domainForm == null || domainForm instanceof String || domainForm instanceof Class;
70-
69+
final String entityName;
7170
if ( domainForm == null ) {
7271
return null;
7372
}
74-
75-
final String entityName;
76-
if ( domainForm instanceof Class<?> clazz ) {
73+
else if ( domainForm instanceof Class<?> clazz ) {
7774
entityName = clazz.getName();
7875
}
76+
else if ( domainForm instanceof String name ) {
77+
entityName = name;
78+
}
7979
else {
80-
entityName = (String) domainForm;
80+
throw new IllegalArgumentException( "Illegal discriminator value: " + domainForm );
8181
}
8282

8383
final DiscriminatorValueDetails discriminatorValueDetails = getDetailsForEntityName( entityName );

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPath.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public <X> X accept(SemanticQueryWalker<X> walker) {
4343

4444
@Override
4545
public AnyDiscriminatorSqmPathSource<T> getExpressible() {
46-
return (AnyDiscriminatorSqmPathSource<T>) getNodeType();
47-
// return (AnyDiscriminatorSqmPathSource<T>) super.getExpressible();
46+
// return (AnyDiscriminatorSqmPathSource<T>) getNodeType();
47+
return (AnyDiscriminatorSqmPathSource<T>) getReferencedPathSource();
4848
}
4949
}

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/AnyDiscriminatorSqmPathSource.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.hibernate.annotations.AnyDiscriminator;
88
import org.hibernate.metamodel.model.domain.SimpleDomainType;
99
import org.hibernate.metamodel.model.domain.ReturnableType;
10+
import org.hibernate.query.sqm.SqmBindable;
1011
import org.hibernate.query.sqm.SqmPathSource;
1112
import org.hibernate.query.sqm.tree.domain.SqmPath;
1213
import org.hibernate.spi.NavigablePath;
@@ -18,7 +19,7 @@
1819
*
1920
*/
2021
public class AnyDiscriminatorSqmPathSource<D> extends AbstractSqmPathSource<D>
21-
implements ReturnableType<D> {
22+
implements ReturnableType<D>, SqmBindable<D> {
2223

2324
private final BasicType<D> domainType;
2425

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/ArrayTupleType.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.hibernate.metamodel.UnsupportedMappingException;
1414
import org.hibernate.metamodel.mapping.JdbcMapping;
1515
import org.hibernate.metamodel.mapping.MappingModelExpressible;
16+
import org.hibernate.query.sqm.SqmBindable;
1617
import org.hibernate.query.sqm.tree.domain.SqmDomainType;
1718
import org.hibernate.query.sqm.tuple.TupleType;
1819
import org.hibernate.metamodel.model.domain.ReturnableType;
@@ -28,9 +29,9 @@ public class ArrayTupleType implements TupleType<Object[]>,
2829
MappingModelExpressible<Object[]> {
2930

3031
private final ObjectArrayJavaType javaType;
31-
private final SqmExpressible<?>[] components;
32+
private final SqmBindable<?>[] components;
3233

33-
public ArrayTupleType(SqmExpressible<?>[] components) {
34+
public ArrayTupleType(SqmBindable<?>[] components) {
3435
this.components = components;
3536
this.javaType = new ObjectArrayJavaType( getTypeDescriptors( components ) );
3637
}
@@ -69,12 +70,12 @@ public List<String> getComponentNames() {
6970
}
7071

7172
@Override
72-
public SqmExpressible<?> get(int index) {
73+
public SqmBindable<?> get(int index) {
7374
return components[index];
7475
}
7576

7677
@Override
77-
public SqmExpressible<?> get(String componentName) {
78+
public SqmBindable<?> get(String componentName) {
7879
throw new UnsupportedMappingException( "Array tuple has no component names" );
7980
}
8081

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/BasicSqmPathSource.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import org.hibernate.query.sqm.SqmPathSource;
1111
import org.hibernate.query.sqm.tree.domain.SqmBasicValuedSimplePath;
1212
import org.hibernate.query.sqm.tree.domain.SqmPath;
13-
import org.hibernate.query.sqm.tree.domain.SqmDomainType;
1413
import org.hibernate.type.descriptor.java.JavaType;
1514

1615
/**
@@ -39,10 +38,10 @@ public String getTypeName() {
3938
return super.getTypeName();
4039
}
4140

42-
@Override
43-
public SqmDomainType<J> getSqmType() {
44-
return getPathType();
45-
}
41+
// @Override
42+
// public SqmDomainType<J> getSqmType() {
43+
// return getPathType();
44+
// }
4645

4746
@Override
4847
public SqmPathSource<?> findSubPathSource(String name) {

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddableTypeImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public SqmEmbeddableDomainType<J> getPathType() {
7575

7676
@Override
7777
public SqmEmbeddableDomainType<J> getSqmType() {
78-
return SqmEmbeddableDomainType.super.getSqmType();
78+
return this;
7979
}
8080

8181
@Override

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EmbeddedDiscriminatorSqmPath.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ public EmbeddableDomainType<T> getEmbeddableDomainType() {
3838

3939
@Override
4040
public EmbeddedDiscriminatorSqmPathSource<T> getExpressible() {
41-
return (EmbeddedDiscriminatorSqmPathSource<T>) getNodeType();
42-
// return (EmbeddedDiscriminatorSqmPathSource<T>) super.getExpressible();
41+
// return (EmbeddedDiscriminatorSqmPathSource<T>) getNodeType();
42+
return (EmbeddedDiscriminatorSqmPathSource<T>) getReferencedPathSource();
4343
}
4444

4545
@Override

0 commit comments

Comments
 (0)