hibernate/hibernate-orm · error · HibernateException

Illegal use of ImplicitDiscriminatorStrategy with explicit n

Error message

Illegal use of ImplicitDiscriminatorStrategy with explicit non-null discriminator mapping: {}

What it means

Error "Illegal use of ImplicitDiscriminatorStrategy with explicit non-null discriminator mapping: {}" thrown in hibernate/hibernate-orm.

Source

Thrown at hibernate-core/src/main/java/org/hibernate/metamodel/mapping/internal/UnifiedAnyDiscriminatorConverter.java:77

	}

	public boolean hasImplicitValueStrategy() {
		return implicitValueStrategy != null;
	}

	private ImplicitDiscriminatorStrategy resolveImplicitValueStrategy(
			ImplicitDiscriminatorStrategy implicitValueStrategy,
			Map<DiscriminatorValue, String> explicitValueMappings) {
		if ( explicitValueMappings.isEmpty() ) {
			if ( implicitValueStrategy == null ) {
				return FullNameImplicitDiscriminatorStrategy.FULL_NAME_STRATEGY;
			}
		}
		else {
			if ( explicitValueMappings.containsKey( NOT_NULL ) ) {
				if ( implicitValueStrategy != null ) {
					// we will ultimately not know how to handle "implicit" values which are non-null
					throw new HibernateException( "Illegal use of ImplicitDiscriminatorStrategy with explicit non-null discriminator mapping: " + discriminatorRole.getFullPath() );
				}
			}
		}
		return implicitValueStrategy;
	}

	private DiscriminatorValueDetails register(DiscriminatorValue value, EntityMappingType entityMapping) {
		final var details = new DiscriminatorValueDetailsImpl( value, entityMapping );
		detailsByValue.put( value, details );
		detailsByEntityName.put( entityMapping.getEntityName(), details );
		return details;
	}

	@Override
	public DiscriminatorValueDetails getDetailsForDiscriminatorValue(Object relationalValue) {
		if ( relationalValue == null ) {
			// return immediately to avoid falling through to NOT_NULL case
			return detailsByValue.get( NULL );

View on GitHub (pinned to fad1729dce)

Solutions

  1. Do not combine the implicit discriminator strategy with an explicit discriminator column/value mapping for the any-mapping; choose one approach.

When it happens

Trigger: Thrown when an implicit discriminator strategy is combined with an explicit non-null discriminator mapping for an @Any association.

Common situations: See trigger scenarios.


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