hibernate/hibernate-orm · error · IllegalArgumentException

No JdbcTypeConstructor registered for SqlTypes.%s

Error message

No JdbcTypeConstructor registered for SqlTypes.%s

What it means

Error "No JdbcTypeConstructor registered for SqlTypes.%s" thrown in hibernate/hibernate-orm.

Source

Thrown at hibernate-core/src/main/java/org/hibernate/metamodel/mapping/internal/EmbeddableMappingTypeImpl.java:311

		final var jdbcTypeRegistry = typeConfiguration.getJdbcTypeRegistry();
		final var aggregateJdbcType = jdbcTypeRegistry.resolveAggregateDescriptor(
				aggregateSqlTypeCode,
				structTypeName,
				this,
				creationContext
		);
		final var basicType = basicTypeRegistry.resolve( getMappedJavaType(), aggregateJdbcType );
		// Register the resolved type under its struct name and java class name
		final var structName = bootDescriptor.getStructName();
		if ( structName != null ) {
			basicTypeRegistry.register( basicType, structName.render() );
			basicTypeRegistry.register( basicType, getMappedJavaType().getJavaTypeClass().getName() );
		}
		final BasicType<?> resolvedJdbcMapping;
		if ( isArray ) {
			final var arrayConstructor = jdbcTypeRegistry.getConstructor( aggregateColumnSqlTypeCode );
			if ( arrayConstructor == null ) {
				throw new IllegalArgumentException( "No JdbcTypeConstructor registered for SqlTypes." + JdbcTypeNameMapper.getTypeName( aggregateColumnSqlTypeCode ) );
			}
			//noinspection rawtypes,unchecked
			final BasicType<?> arrayType =
					( (BasicPluralJavaType) resolution.getDomainJavaType() )
							.resolveType(
									typeConfiguration,
									creationContext.getDialect(),
									basicType,
									aggregateColumn,
									typeConfiguration.getCurrentBaseSqlTypeIndicators()
							);
			basicTypeRegistry.register( arrayType );
			resolvedJdbcMapping = arrayType;
		}
		else {
			resolvedJdbcMapping = basicType;
		}
		resolution.updateResolution( resolvedJdbcMapping );

View on GitHub (pinned to fad1729dce)

Solutions

  1. Register a JdbcTypeConstructor for the JDBC type code in the TypeConfiguration, or use a different @JdbcTypeCode that has a registered constructor.

When it happens

Trigger: Thrown during mapping model creation when no JdbcTypeConstructor is registered for the JDBC type code used by an embeddable attribute.

Common situations: See trigger scenarios.


AI-assisted analysis of hibernate/hibernate-orm@fad1729dce (2026-08-22). Data as JSON: /api/errors/7be69d0627d564ac. Report an issue: GitHub.