Skip to content

Commit

Permalink
detect use of @DiscriminatorOptions(force=true) on JOINED with no @Di…
Browse files Browse the repository at this point in the history
…scriminatorColumn
  • Loading branch information
gavinking committed Dec 26, 2022
1 parent 014847f commit 5f0b27f
Showing 1 changed file with 9 additions and 3 deletions.
Expand Up @@ -644,7 +644,7 @@ private void singleTableInheritance(InheritanceState inheritanceState, PropertyH
final RootClass rootClass = (RootClass) persistentClass;
if ( inheritanceState.hasSiblings()
|| discriminatorColumn != null && !discriminatorColumn.isImplicit() ) {
bindDiscriminatorColumnToRootPersistentClass(rootClass, discriminatorColumn, holder );
bindDiscriminatorColumnToRootPersistentClass( rootClass, discriminatorColumn, holder );
rootClass.setForceDiscriminator( isForceDiscriminatorInSelects() );
}
}
Expand Down Expand Up @@ -674,10 +674,16 @@ private void joinedInheritance(InheritanceState state, PersistentClass superEnti
// the class we're processing is the root of the hierarchy, so
// let's see if we had a discriminator column (it's perfectly
// valid for joined inheritance to not have a discriminator)
if ( discriminatorColumn != null ) {
if ( discriminatorColumn == null ) {
if ( isForceDiscriminatorInSelects() ) {
throw new AnnotationException( "Entity '" + rootClass.getEntityName()
+ "' with 'JOINED' inheritance is annotated '@DiscriminatorOptions(force=true)' but has no discriminator column" );
}
}
else {
// we do have a discriminator column
if ( state.hasSiblings() || !discriminatorColumn.isImplicit() ) {
bindDiscriminatorColumnToRootPersistentClass(rootClass, discriminatorColumn, holder );
bindDiscriminatorColumnToRootPersistentClass( rootClass, discriminatorColumn, holder );
rootClass.setForceDiscriminator( isForceDiscriminatorInSelects() );
}
}
Expand Down

0 comments on commit 5f0b27f

Please sign in to comment.