diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/spi/JdbcTypeRegistry.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/spi/JdbcTypeRegistry.java index 2760d9665968..496787aa2f37 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/spi/JdbcTypeRegistry.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/spi/JdbcTypeRegistry.java @@ -9,6 +9,7 @@ import java.io.Serializable; import java.sql.Types; import java.util.Locale; +import java.util.Map; import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; @@ -271,7 +272,17 @@ private JdbcType resolveTypeConstructorDescriptor( public boolean hasRegisteredDescriptor(int jdbcTypeCode) { return descriptorMap.containsKey( jdbcTypeCode ) || JdbcTypeNameMapper.isStandardTypeCode( jdbcTypeCode ) - || JdbcTypeFamilyInformation.INSTANCE.locateJdbcTypeFamilyByTypeCode( jdbcTypeCode ) != null; + || JdbcTypeFamilyInformation.INSTANCE.locateJdbcTypeFamilyByTypeCode( jdbcTypeCode ) != null + || locateConstructedJdbcType( jdbcTypeCode ); + } + + private boolean locateConstructedJdbcType(int jdbcTypeCode) { + for ( TypeConstructedJdbcTypeKey key : typeConstructorDescriptorMap.keySet() ) { + if ( key.typeCode == jdbcTypeCode ) { + return true; + } + } + return false; } public JdbcTypeConstructor getConstructor(int jdbcTypeCode) {