Fix java.sql.Date attribute assigned wrong BasicType

This commit is contained in:
Andrea Boriero 2021-06-29 15:54:46 +02:00
parent 017db55a1a
commit 547e247bb6
2 changed files with 14 additions and 2 deletions

View File

@ -7,6 +7,7 @@
package org.hibernate.boot.model.process.internal;
import java.io.Serializable;
import java.lang.reflect.Type;
import java.util.function.Function;
import java.util.function.Supplier;
import javax.persistence.EnumType;
@ -48,6 +49,7 @@ public class InferredBasicValueResolver {
public static BasicValue.Resolution from(
Function<TypeConfiguration, BasicJavaDescriptor> explicitJavaTypeAccess,
Function<TypeConfiguration, JdbcTypeDescriptor> explicitSqlTypeAccess,
java.lang.reflect.Type resolvedJavaType,
Supplier<JavaTypeDescriptor> reflectedJtdResolver,
JdbcTypeDescriptorIndicators stdIndicators,
Table table,
@ -100,6 +102,7 @@ else if ( explicitJavaType instanceof TemporalJavaTypeDescriptor ) {
(TemporalJavaTypeDescriptor) reflectedJtd,
explicitJavaType,
null,
resolvedJavaType,
stdIndicators,
typeConfiguration
);
@ -154,6 +157,7 @@ else if ( reflectedJtd instanceof TemporalJavaTypeDescriptor ) {
(TemporalJavaTypeDescriptor) reflectedJtd,
null,
null,
resolvedJavaType,
stdIndicators,
typeConfiguration
);
@ -360,6 +364,7 @@ public static InferredBasicValueResolution fromTemporal(
TemporalJavaTypeDescriptor reflectedJtd,
BasicJavaDescriptor explicitJavaType,
JdbcTypeDescriptor explicitJdbcType,
java.lang.reflect.Type resolvedJavaType,
JdbcTypeDescriptorIndicators stdIndicators,
TypeConfiguration typeConfiguration) {
final TemporalType requestedTemporalPrecision = stdIndicators.getTemporalPrecision();
@ -437,8 +442,14 @@ public static InferredBasicValueResolution fromTemporal(
//
// - for the moment continue to use the legacy resolution to registered
// BasicType
final BasicType registeredType = typeConfiguration.getBasicTypeRegistry().getRegisteredType( reflectedJtd.getJavaType() );
final Type javaType;
if ( resolvedJavaType == null ) {
javaType = reflectedJtd.getJavaType();
}
else {
javaType = resolvedJavaType;
}
final BasicType registeredType = typeConfiguration.getBasicTypeRegistry().getRegisteredType( javaType );
final AllowableTemporalParameterType legacyTemporalType = (AllowableTemporalParameterType) registeredType;
final BasicType basicType;

View File

@ -376,6 +376,7 @@ public TypeConfiguration getTypeConfiguration() {
return InferredBasicValueResolver.from(
explicitJavaTypeAccess,
explicitSqlTypeAccess,
resolvedJavaType,
this::determineReflectedJavaTypeDescriptor,
this,
getTable(),