Skip to content

Commit 594608d

Browse files
committed
HHH-16972 DomainType doesn't need to extend BindableType
1 parent 2f2ba96 commit 594608d

16 files changed

+60
-28
lines changed

hibernate-core/src/main/java/org/hibernate/boot/model/internal/NamedGraphCreatorJpa.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ private static SubGraphImplementor<?> createSubgraph(
129129
private static <T, E, K> SubGraphImplementor<?> makeAttributeNodeValueSubgraph(
130130
AttributeNodeImplementor<T, E, K> attributeNode, Class<?> subgraphType) {
131131
final Class<?> attributeValueType =
132-
attributeNode.getAttributeDescriptor().getValueGraphType().getBindableJavaType();
132+
attributeNode.getAttributeDescriptor().getValueGraphType().getJavaType();
133133
if ( !attributeValueType.isAssignableFrom( subgraphType ) ) {
134134
throw new AnnotationException( "Named subgraph type '" + subgraphType.getName()
135135
+ "' is not a subtype of the value type '" + attributeValueType.getName() + "'" );

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public class DdlTypeHelper {
2929
public static BasicType<?> resolveArrayType(DomainType<?> elementType, TypeConfiguration typeConfiguration) {
3030
@SuppressWarnings("unchecked") final BasicPluralJavaType<Object> arrayJavaType = (BasicPluralJavaType<Object>) typeConfiguration.getJavaTypeRegistry()
3131
.getDescriptor(
32-
Array.newInstance( elementType.getBindableJavaType(), 0 ).getClass()
32+
Array.newInstance( elementType.getJavaType(), 0 ).getClass()
3333
);
3434
final Dialect dialect = typeConfiguration.getCurrentBaseSqlTypeIndicators().getDialect();
3535
return arrayJavaType.resolveType(
@@ -46,7 +46,7 @@ public static BasicType<?> resolveListType(DomainType<?> elementType, TypeConfig
4646
@SuppressWarnings("unchecked") final BasicPluralJavaType<Object> arrayJavaType = (BasicPluralJavaType<Object>) typeConfiguration.getJavaTypeRegistry()
4747
.getDescriptor( List.class )
4848
.createJavaType(
49-
new ParameterizedTypeImpl( List.class, new Type[]{ elementType.getBindableJavaType() }, null ),
49+
new ParameterizedTypeImpl( List.class, new Type[]{ elementType.getJavaType() }, null ),
5050
typeConfiguration
5151
);
5252
final Dialect dialect = typeConfiguration.getCurrentBaseSqlTypeIndicators().getDialect();

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public BasicValuedMapping resolveFunctionReturnType(
8181

8282
@AllowReflection
8383
public static <T> BasicType<?> resolveJsonArrayType(DomainType<T> elementType, TypeConfiguration typeConfiguration) {
84-
final Class<?> arrayClass = Array.newInstance( elementType.getBindableJavaType(), 0 ).getClass();
84+
final Class<?> arrayClass = Array.newInstance( elementType.getJavaType(), 0 ).getClass();
8585
@SuppressWarnings("unchecked")
8686
final BasicPluralJavaType<T> arrayJavaType =
8787
(BasicPluralJavaType<T>)

hibernate-core/src/main/java/org/hibernate/graph/internal/AttributeNodeImpl.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ public Map<Class<?>, SubGraphImplementor<?>> getSubGraphs() {
352352
}
353353
else {
354354
final HashMap<Class<?>, SubGraphImplementor<?>> map = new HashMap<>( valueSubgraph.getTreatedSubgraphs() );
355-
map.put( attribute.getValueGraphType().getBindableJavaType(), valueSubgraph );
355+
map.put( attribute.getValueGraphType().getJavaType(), valueSubgraph );
356356
return map;
357357
}
358358
}

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

+5
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,9 @@ public interface BasicDomainType<J>
1919
default PersistenceType getPersistenceType() {
2020
return PersistenceType.BASIC;
2121
}
22+
23+
@Override
24+
default Class<J> getJavaType() {
25+
return ReturnableType.super.getJavaType();
26+
}
2227
}

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

+11-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
package org.hibernate.metamodel.model.domain;
66

77
import org.hibernate.Internal;
8-
import org.hibernate.query.BindableType;
98
import org.hibernate.type.descriptor.java.JavaType;
109

1110
/**
@@ -26,10 +25,20 @@
2625
*
2726
* @author Steve Ebersole
2827
*/
29-
public interface DomainType<J> extends BindableType<J> {
28+
public interface DomainType<J> {
3029

30+
/**
31+
* The {@link JavaType} representing this domain type.
32+
*/
3133
JavaType<J> getExpressibleJavaType();
3234

35+
/**
36+
* The Java class which represents by this domain type.
37+
*
38+
* @see jakarta.persistence.metamodel.Type#getJavaType
39+
*/
40+
Class<J> getJavaType();
41+
3342
/**
3443
* The name of the type.
3544
*

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

+3-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
*
1616
* @author Steve Ebersole
1717
*/
18-
public interface IdentifiableDomainType<J> extends ManagedDomainType<J>, IdentifiableType<J> {
18+
public interface IdentifiableDomainType<J>
19+
extends ManagedDomainType<J>, IdentifiableType<J> {
20+
1921
PathSource<?> getIdentifierDescriptor();
2022

2123
@Override

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

+8-1
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@
1010
import org.hibernate.metamodel.RepresentationMode;
1111

1212
import jakarta.persistence.metamodel.ManagedType;
13+
import org.hibernate.query.BindableType;
1314

1415
/**
1516
* Extensions to the JPA-defined {@link ManagedType} contract.
1617
*
1718
* @author Steve Ebersole
1819
*/
19-
public interface ManagedDomainType<J> extends DomainType<J>, ManagedType<J> {
20+
public interface ManagedDomainType<J>
21+
extends DomainType<J>, ManagedType<J>, BindableType<J> {
2022
/**
2123
* Get the type name.
2224
*
@@ -34,6 +36,11 @@ public interface ManagedDomainType<J> extends DomainType<J>, ManagedType<J> {
3436

3537
RepresentationMode getRepresentationMode();
3638

39+
@Override
40+
default Class<J> getJavaType() {
41+
return getExpressibleJavaType().getJavaTypeClass();
42+
}
43+
3744
/**
3845
* The descriptor of the supertype of this type.
3946
*/

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

+9-1
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,22 @@
44
*/
55
package org.hibernate.metamodel.model.domain;
66

7+
import org.hibernate.query.BindableType;
8+
79
/**
810
* Describes any non-collection type
911
*
1012
* @author Steve Ebersole
1113
*/
12-
public interface SimpleDomainType<J> extends DomainType<J>, jakarta.persistence.metamodel.Type<J> {
14+
public interface SimpleDomainType<J>
15+
extends DomainType<J>, BindableType<J>, jakarta.persistence.metamodel.Type<J> {
1316
@Override
1417
default Class<J> getBindableJavaType() {
1518
return getJavaType();
1619
}
20+
21+
@Override
22+
default Class<J> getJavaType() {
23+
return getExpressibleJavaType().getJavaTypeClass();
24+
}
1725
}

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

-10
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,4 @@ public AbstractDomainType(JavaType<J> javaType) {
2121
public JavaType<J> getExpressibleJavaType() {
2222
return javaType;
2323
}
24-
25-
@Override
26-
public Class<J> getJavaType() {
27-
return getExpressibleJavaType().getJavaTypeClass();
28-
}
29-
30-
@Override
31-
public Class<J> getBindableJavaType() {
32-
return getJavaType();
33-
}
3424
}

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

+10
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,16 @@ public JpaMetamodelImplementor getMetamodel() {
9393
return metamodel;
9494
}
9595

96+
@Override
97+
public Class<J> getJavaType() {
98+
return super.getJavaType();
99+
}
100+
101+
@Override
102+
public Class<J> getBindableJavaType() {
103+
return super.getBindableJavaType();
104+
}
105+
96106
@Override
97107
public ManagedDomainType<? super J> getSuperType() {
98108
return supertype;

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ public SqmDomainType<J> getPathType() {
103103
}
104104

105105
@Override
106-
public DomainType<J> getValueGraphType() {
106+
public SqmDomainType<J> getValueGraphType() {
107107
return getPathType();
108108
}
109109

hibernate-core/src/main/java/org/hibernate/query/sqm/internal/TypecheckUtil.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import org.hibernate.metamodel.model.domain.DomainType;
1212
import org.hibernate.metamodel.model.domain.EmbeddableDomainType;
1313
import org.hibernate.metamodel.model.domain.ManagedDomainType;
14-
import org.hibernate.query.BindableType;
1514
import org.hibernate.query.sqm.tuple.TupleType;
1615
import org.hibernate.metamodel.model.domain.internal.EntityDiscriminatorSqmPathSource;
1716
import org.hibernate.persister.entity.EntityPersister;
@@ -285,7 +284,7 @@ private static boolean areEntityTypesComparable(
285284
}
286285

287286
private static boolean isDiscriminatorTypeComparable(
288-
EntityDiscriminatorSqmPathSource<?> lhsDiscriminator, BindableType<?> rhsType,
287+
EntityDiscriminatorSqmPathSource<?> lhsDiscriminator, DomainType<?> rhsType,
289288
BindingContext bindingContext) {
290289
final String entityName = lhsDiscriminator.getEntityDomainType().getHibernateEntityName();
291290
final EntityPersister lhsEntity = bindingContext.getMappingMetamodel().getEntityDescriptor( entityName );

hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmBasicValuedSimplePath.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
package org.hibernate.query.sqm.tree.domain;
66

77
import org.hibernate.metamodel.mapping.CollectionPart;
8-
import org.hibernate.metamodel.model.domain.DomainType;
98
import org.hibernate.metamodel.model.domain.EntityDomainType;
109
import org.hibernate.query.hql.spi.SqmPathRegistry;
1110
import org.hibernate.query.spi.QueryEngine;
@@ -124,7 +123,7 @@ public SqmPath<?> resolveIndexedAccess(
124123
}
125124

126125
private SelfRenderingSqmFunction<?> getIndexFunction(
127-
SqmExpression<?> selector, DomainType<T> sqmPathType, QueryEngine queryEngine) {
126+
SqmExpression<?> selector, SqmDomainType<T> sqmPathType, QueryEngine queryEngine) {
128127
final SqmFunctionRegistry registry = queryEngine.getSqmFunctionRegistry();
129128
if ( sqmPathType instanceof BasicPluralType<?, ?> ) {
130129
return registry.findFunctionDescriptor( "array_get" )
@@ -147,7 +146,7 @@ else if ( getJavaTypeClass( sqmPathType ) == String.class ) {
147146
}
148147
}
149148

150-
private Class<?> getJavaTypeClass(DomainType<T> sqmPathType) {
149+
private Class<?> getJavaTypeClass(SqmDomainType<T> sqmPathType) {
151150
return sqmPathType.resolveExpressible( nodeBuilder() )
152151
.getRelationalJavaType()
153152
.getJavaTypeClass();

hibernate-core/src/main/java/org/hibernate/query/sqm/tree/domain/SqmDomainType.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
package org.hibernate.query.sqm.tree.domain;
66

77
import org.hibernate.metamodel.model.domain.DomainType;
8+
import org.hibernate.query.BindableType;
89
import org.hibernate.query.sqm.SqmExpressible;
910

10-
public interface SqmDomainType<T> extends DomainType<T>, SqmExpressible<T> {
11+
public interface SqmDomainType<T>
12+
extends DomainType<T>, SqmExpressible<T>, BindableType<T> {
1113
@Override
1214
SqmDomainType<T> getSqmType();
1315

hibernate-core/src/main/java/org/hibernate/type/BasicType.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@
2525
*
2626
* @author Steve Ebersole
2727
*/
28-
public interface BasicType<T> extends Type, BasicDomainType<T>, MappingType, BasicValuedMapping, JdbcMapping, SqmDomainType<T> {
28+
public interface BasicType<T>
29+
extends Type, BasicDomainType<T>, MappingType, BasicValuedMapping, JdbcMapping, SqmDomainType<T> {
2930
/**
3031
* Get the names under which this type should be registered in the type registry.
3132
*

0 commit comments

Comments
 (0)