Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -405,7 +405,7 @@ protected void contributeCockroachTypes(TypeContributions typeContributions, Ser
ObjectNullAsBinaryTypeJdbcType.INSTANCE,
typeContributions.getTypeConfiguration()
.getJavaTypeRegistry()
.getDescriptor( Object.class )
.resolveDescriptor( Object.class )
)
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1135,7 +1135,7 @@ public void contributeTypes(TypeContributions typeContributions, ServiceRegistry
ObjectNullResolvingJdbcType.INSTANCE,
typeContributions.getTypeConfiguration()
.getJavaTypeRegistry()
.getDescriptor( Object.class )
.resolveDescriptor( Object.class )
)
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -671,7 +671,7 @@ public void contributeTypes(TypeContributions typeContributions, ServiceRegistry
ObjectNullResolvingJdbcType.INSTANCE,
typeContributions.getTypeConfiguration()
.getJavaTypeRegistry()
.getDescriptor( Object.class )
.resolveDescriptor( Object.class )
)
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -666,7 +666,7 @@ public void contributeTypes(TypeContributions typeContributions, ServiceRegistry
ObjectNullResolvingJdbcType.INSTANCE,
typeContributions.getTypeConfiguration()
.getJavaTypeRegistry()
.getDescriptor( Object.class )
.resolveDescriptor( Object.class )
)
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1270,7 +1270,7 @@ protected void contributeGaussDBTypes(TypeContributions typeContributions) {
ObjectNullAsBinaryTypeJdbcType.INSTANCE,
typeContributions.getTypeConfiguration()
.getJavaTypeRegistry()
.getDescriptor( Object.class )
.resolveDescriptor( Object.class )
)
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1128,7 +1128,7 @@ public void contributeTypes(TypeContributions typeContributions, ServiceRegistry
ObjectNullAsBinaryTypeJdbcType.INSTANCE,
typeContributions.getTypeConfiguration()
.getJavaTypeRegistry()
.getDescriptor( Object.class )
.resolveDescriptor( Object.class )
)
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -756,7 +756,7 @@ public void contributeTypes(TypeContributions typeContributions, ServiceRegistry
NullJdbcType.INSTANCE,
typeContributions.getTypeConfiguration()
.getJavaTypeRegistry()
.getDescriptor( Object.class )
.resolveDescriptor( Object.class )
)
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1029,15 +1029,15 @@ public void contributeTypes(TypeContributions typeContributions, ServiceRegistry
NullJdbcType.INSTANCE,
typeContributions.getTypeConfiguration()
.getJavaTypeRegistry()
.getDescriptor( Object.class )
.resolveDescriptor( Object.class )
)
);
typeContributions.contributeType(
new JavaObjectType(
ObjectNullAsNullTypeJdbcType.INSTANCE,
typeContributions.getTypeConfiguration()
.getJavaTypeRegistry()
.getDescriptor( Object.class )
.resolveDescriptor( Object.class )
)
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1558,7 +1558,7 @@ protected void contributePostgreSQLTypes(TypeContributions typeContributions, Se
ObjectNullAsBinaryTypeJdbcType.INSTANCE,
typeContributions.getTypeConfiguration()
.getJavaTypeRegistry()
.getDescriptor( Object.class )
.resolveDescriptor( Object.class )
)
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -665,7 +665,7 @@ public void contributeTypes(TypeContributions typeContributions, ServiceRegistry
NullJdbcType.INSTANCE,
typeContributions.getTypeConfiguration()
.getJavaTypeRegistry()
.getDescriptor( Object.class )
.resolveDescriptor( Object.class )
) );

jdbcTypeRegistry.addDescriptor( EnumJdbcType.INSTANCE );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -262,15 +262,15 @@ public void contributeTypes(TypeContributions typeContributions, ServiceRegistry
ObjectNullAsBinaryTypeJdbcType.INSTANCE,
typeContributions.getTypeConfiguration()
.getJavaTypeRegistry()
.getDescriptor( Object.class )
.resolveDescriptor( Object.class )
)
);
typeContributions.contributeType(
new NullType(
ObjectNullAsBinaryTypeJdbcType.INSTANCE,
typeContributions.getTypeConfiguration()
.getJavaTypeRegistry()
.getDescriptor( Object.class )
.resolveDescriptor( Object.class )
)
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import org.hibernate.boot.spi.ClassmateContext;
import org.hibernate.boot.spi.MetadataBuildingContext;
import org.hibernate.internal.util.GenericsHelper;
import org.hibernate.internal.util.type.PrimitiveWrapperHelper;
import org.hibernate.models.spi.MemberDetails;

import com.fasterxml.classmate.ResolvedType;
Expand All @@ -24,6 +23,8 @@
import com.fasterxml.classmate.members.ResolvedMethod;
import jakarta.persistence.AttributeConverter;

import static org.hibernate.internal.util.type.PrimitiveWrappers.canonicalize;

/**
* Helpers related to handling converters
*/
Expand Down Expand Up @@ -100,11 +101,8 @@ else if ( converterParamTypes.size() != 2 ) {
* @return {@code true} if they match, otherwise {@code false}.
*/
public static boolean typesMatch(ResolvedType converterDefinedType, ResolvedType checkType) {
Class<?> erasedCheckType = checkType.getErasedType();
if ( erasedCheckType.isPrimitive() ) {
erasedCheckType = PrimitiveWrapperHelper.getDescriptorByPrimitiveType( erasedCheckType ).getWrapperClass();
}
else if ( erasedCheckType.isArray() ) {
final var erasedCheckType = canonicalize( checkType.getErasedType() );
if ( erasedCheckType.isArray() ) {
// converterDefinedType have type parameters if it extends super generic class
// but checkType doesn't have any type parameters
// comparing erased type is enough
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -831,7 +831,7 @@ private void prepareAnyDiscriminator(MemberDetails memberDetails) {
return originalResolution != null
? originalResolution
: typeConfiguration.getJavaTypeRegistry()
.getDescriptor( implicitJavaTypeAccess.apply( typeConfiguration ) )
.resolveDescriptor( implicitJavaTypeAccess.apply( typeConfiguration ) )
.getRecommendedJdbcType( typeConfiguration.getCurrentBaseSqlTypeIndicators() );
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ else if ( reflectedJtd instanceof SerializableJavaType
else {
if ( explicitJdbcType != null ) {
// we have an explicit STD, but no JTD - infer JTD
// NOTE : yes it's an odd case, but easy to implement here, so...
// NOTE: yes it's an odd case, but easy to implement here, so...
Integer length = null;
Integer scale = null;
if ( selectable instanceof Column column ) {
Expand All @@ -212,8 +212,10 @@ else if ( column.getLength() != null ) {
}
}

final JavaType<T> recommendedJtd =
explicitJdbcType.getJdbcRecommendedJavaTypeMapping( length, scale, typeConfiguration );
final var recommendedJavaType =
explicitJdbcType.getRecommendedJavaType( length, scale, typeConfiguration );
// TODO: check this type cast
final var recommendedJtd = (JavaType<T>) recommendedJavaType;
jdbcMapping = resolveSqlTypeIndicators(
stdIndicators,
basicTypeRegistry.resolve( recommendedJtd, explicitJdbcType ),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,29 +28,29 @@
*/
public class VersionResolution<E> implements BasicValue.Resolution<E> {

// todo (6.0) : support explicit JTD?
// todo (6.0) : support explicit STD?

public static <E> VersionResolution<E> from(
public static VersionResolution<?> from(
Function<TypeConfiguration, java.lang.reflect.Type> implicitJavaTypeAccess,
TimeZoneStorageType timeZoneStorageType,
MetadataBuildingContext context) {

// todo (6.0) : add support for Dialect-specific interpretation?

final var typeConfiguration = context.getBootstrapContext().getTypeConfiguration();
final var implicitJavaType = implicitJavaTypeAccess.apply( typeConfiguration );
final JavaType<E> registered = typeConfiguration.getJavaTypeRegistry().getDescriptor( implicitJavaType );
final var basicJavaType = (BasicJavaType<E>) registered;
final var registered = typeConfiguration.getJavaTypeRegistry().resolveDescriptor( implicitJavaType );
return resolve( timeZoneStorageType, context, (BasicJavaType<?>) registered );
}

private static <E> VersionResolution<E> resolve(
TimeZoneStorageType timeZoneStorageType,
MetadataBuildingContext context,
BasicJavaType<E> basicJavaType) {
final var typeConfiguration = context.getBootstrapContext().getTypeConfiguration();
final var recommendedJdbcType = basicJavaType.getRecommendedJdbcType(
new JdbcTypeIndicators() {
@Override
public TypeConfiguration getTypeConfiguration() {
return typeConfiguration;
}

@Override
@Override @SuppressWarnings("deprecation")
public TemporalType getTemporalPrecision() {
// if it is a temporal version, it needs to be a TIMESTAMP
return TemporalType.TIMESTAMP;
Expand Down Expand Up @@ -106,7 +106,6 @@ public Dialect getDialect() {
final var basicTypeRegistry = typeConfiguration.getBasicTypeRegistry();
final var basicType = basicTypeRegistry.resolve( basicJavaType, recommendedJdbcType );
final var legacyType = basicTypeRegistry.getRegisteredType( basicJavaType.getJavaTypeClass() );

assert legacyType.getJdbcType().getDefaultSqlTypeCode() == recommendedJdbcType.getDefaultSqlTypeCode();

return new VersionResolution<>( basicJavaType, recommendedJdbcType, basicType, legacyType );
Expand Down
Loading
Loading