Skip to content

Commit 3232d98

Browse files
committed
don't use a raw type in JdbcMapping
1 parent c5ad153 commit 3232d98

File tree

7 files changed

+24
-22
lines changed

7 files changed

+24
-22
lines changed

hibernate-core/src/main/java/org/hibernate/internal/SessionFactoryImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,9 +268,9 @@ public SessionFactoryImpl(
268268
final JdbcMapping jdbcMapping = tenantFilter.getParameterJdbcMapping( TenantIdBinder.PARAMETER_NAME );
269269
assert jdbcMapping != null;
270270
//noinspection unchecked
271-
tenantIdentifierJavaType = jdbcMapping.getJavaTypeDescriptor();
271+
tenantIdentifierJavaType = (JavaType<Object>) jdbcMapping.getJavaTypeDescriptor();
272272
}
273-
for ( Map.Entry<String, FilterDefinition> filterEntry : filters.entrySet() ) {
273+
for ( var filterEntry : filters.entrySet() ) {
274274
if ( filterEntry.getValue().isAutoEnabled() ) {
275275
autoEnabledFilters.add( filterEntry.getValue() );
276276
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public interface JdbcMapping extends MappingType, JdbcMappingContainer {
5454
* The descriptor for the Java type represented by this
5555
* expressible type
5656
*/
57-
JavaType getJavaTypeDescriptor();
57+
JavaType<?> getJavaTypeDescriptor();
5858

5959
/**
6060
* The descriptor for the SQL type represented by this

hibernate-core/src/main/java/org/hibernate/query/results/internal/complete/CompleteResultBuilderBasicValuedConverted.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,14 @@ public CompleteResultBuilderBasicValuedConverted(
4646
BasicValuedMapping underlyingMapping) {
4747
this.explicitColumnName = explicitColumnName;
4848
this.underlyingMapping = underlyingMapping;
49-
@SuppressWarnings("unchecked")
50-
final JavaType<R> relationalType =
51-
underlyingMapping.getJdbcMapping().getJavaTypeDescriptor();
52-
this.valueConverter = new AttributeConverterBean<>(
49+
final JavaType<?> relationalType =
50+
underlyingMapping.getJdbcMapping()
51+
.getJavaTypeDescriptor();
52+
this.valueConverter = new JpaAttributeConverterImpl<>(
5353
converterBean,
5454
converterJtd,
5555
domainJavaType,
56-
relationalType
56+
(JavaType<R>) relationalType
5757
);
5858
}
5959

hibernate-core/src/main/java/org/hibernate/sql/ast/tree/expression/JdbcLiteral.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public void bindParameterValue(
7878
// MappingModelExpressible
7979

8080
@Override
81-
public MappingModelExpressible<?> getExpressionType() {
81+
public MappingModelExpressible<T> getExpressionType() {
8282
return this;
8383
}
8484

@@ -184,6 +184,7 @@ public void applySqlSelections(DomainResultCreationState creationState) {
184184

185185
@Override
186186
public JavaType<T> getExpressibleJavaType() {
187-
return jdbcMapping.getJavaTypeDescriptor();
187+
return (JavaType<T>)
188+
jdbcMapping.getJavaTypeDescriptor();
188189
}
189190
}

hibernate-core/src/main/java/org/hibernate/sql/exec/spi/AbstractJdbcOperationQuery.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import org.hibernate.query.spi.QueryOptions;
1212
import org.hibernate.sql.ast.tree.expression.JdbcParameter;
13+
import org.hibernate.type.descriptor.java.JavaType;
1314

1415
import static java.util.Collections.emptyMap;
1516

@@ -76,14 +77,18 @@ public boolean isCompatibleWith(JdbcParameterBindings jdbcParameterBindings, Que
7677
for ( var entry : appliedParameters.entrySet() ) {
7778
final JdbcParameterBinding binding = jdbcParameterBindings.getBinding( entry.getKey() );
7879
final JdbcParameterBinding appliedBinding = entry.getValue();
79-
//noinspection unchecked
80-
if ( binding == null || !appliedBinding.getBindType()
81-
.getJavaTypeDescriptor()
82-
.areEqual( binding.getBindValue(), appliedBinding.getBindValue() ) ) {
80+
if ( binding == null
81+
|| !equal( appliedBinding, binding, appliedBinding.getBindType().getJavaTypeDescriptor() ) ) {
8382
return false;
8483
}
8584
}
8685
}
8786
return true;
8887
}
88+
89+
@SuppressWarnings("unchecked")
90+
static <T> boolean equal(JdbcParameterBinding appliedBinding, JdbcParameterBinding binding, JavaType<T> type) {
91+
return type.isInstance( appliedBinding.getBindValue() )
92+
&& type.areEqual( (T) binding.getBindValue(), (T) appliedBinding.getBindValue() );
93+
}
8994
}

hibernate-core/src/main/java/org/hibernate/sql/exec/spi/JdbcOperationQuerySelect.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import org.hibernate.query.spi.QueryOptions;
1414
import org.hibernate.sql.ast.tree.expression.JdbcParameter;
1515
import org.hibernate.sql.results.jdbc.spi.JdbcValuesMappingProducer;
16-
import org.hibernate.type.descriptor.java.JavaType;
1716

1817
/**
1918
* Executable JDBC command
@@ -128,7 +127,8 @@ else if ( jdbcParameterBindings.getBinding( parameter ) == null ) {
128127
if ( parameter != offsetParameter && parameter != limitParameter ) {
129128
final JdbcParameterBinding binding = jdbcParameterBindings.getBinding( parameter );
130129
// TODO: appliedBinding can be null here, resulting in NPE
131-
if ( binding == null || !areEqualBindings( appliedBinding, binding ) ) {
130+
if ( binding == null
131+
|| !equal( appliedBinding, binding, appliedBinding.getBindType().getJavaTypeDescriptor() ) ) {
132132
return false;
133133
}
134134
}
@@ -140,11 +140,6 @@ && isCompatible( offsetParameter, limit == null ? null : limit.getFirstRow(), 0
140140
&& isCompatible( limitParameter, limit == null ? null : limit.getMaxRows(), Integer.MAX_VALUE );
141141
}
142142

143-
private static boolean areEqualBindings(JdbcParameterBinding appliedBinding, JdbcParameterBinding binding) {
144-
final JavaType<Object> javaTypeDescriptor = appliedBinding.getBindType().getJavaTypeDescriptor();
145-
return javaTypeDescriptor.areEqual( binding.getBindValue(), appliedBinding.getBindValue() );
146-
}
147-
148143
private boolean isCompatible(JdbcParameter parameter, Integer requestedValue, int defaultValue) {
149144
if ( parameter == null ) {
150145
return requestedValue == null;

hibernate-core/src/main/java/org/hibernate/sql/results/graph/basic/BasicResult.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ public BasicResult(
5454
this(
5555
jdbcValuesArrayPosition,
5656
resultVariable,
57-
jdbcMapping.getJavaTypeDescriptor(),
57+
(JavaType<T>)
58+
jdbcMapping.getJavaTypeDescriptor(),
5859
(BasicValueConverter<T,?>)
5960
jdbcMapping.getValueConverter(),
6061
navigablePath,

0 commit comments

Comments
 (0)