Skip to content

Commit 1168b5a

Browse files
committed
check an unchecked cast
cc @beikov
1 parent 9639798 commit 1168b5a

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

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

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -269,12 +269,20 @@ else if ( typeConfiguration.getJavaTypeRegistry().resolveDescriptor( javaType.ge
269269
if ( basicTypeReferences != null && !basicTypeReferences.isEmpty() ) {
270270
final var jdbcTypeRegistry = typeConfiguration.getJdbcTypeRegistry();
271271
for ( var typeReference : basicTypeReferences ) {
272-
if ( jdbcTypeRegistry.getDescriptor( typeReference.getSqlTypeCode() ) == jdbcType ) {
273-
final var basicType = typesByName.get( typeReference.getName() );
274-
//noinspection unchecked
275-
return registeredTypeMatches( javaType, jdbcType, basicType )
276-
? (BasicType<J>) basicType
277-
: (BasicType<J>) createBasicType( typeReference.getName(), typeReference );
272+
if ( typeReference.getJavaType() == javaType.getJavaTypeClass() ) {
273+
@SuppressWarnings("unchecked") // safe, we just checked
274+
final var castTypeReference = (BasicTypeReference<J>) typeReference;
275+
if ( jdbcTypeRegistry.getDescriptor( typeReference.getSqlTypeCode() ) == jdbcType ) {
276+
final var basicType = typesByName.get( typeReference.getName() );
277+
if ( registeredTypeMatches( javaType, jdbcType, basicType ) ) {
278+
@SuppressWarnings("unchecked") // safe, we checked in registeredTypeMatches()
279+
final var castType = (BasicType<J>) basicType;
280+
return castType;
281+
}
282+
else {
283+
return createBasicType( castTypeReference.getName(), castTypeReference );
284+
}
285+
}
278286
}
279287
}
280288
}

0 commit comments

Comments
 (0)