Skip to content

Commit e99f889

Browse files
sebersolebrmeyer
authored andcommitted
HHH-6911 - Write DiscriminatorValue to DiscriminatorColumn when combined
with InheritanceType#JOINED Conflicts: hibernate-core/src/main/java/org/hibernate/internal/CoreMessageLogger.java
1 parent d847a17 commit e99f889

File tree

2 files changed

+39
-3
lines changed

2 files changed

+39
-3
lines changed

hibernate-core/src/main/java/org/hibernate/cfg/AnnotationBinder.java

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -832,8 +832,32 @@ private static Ejb3DiscriminatorColumn processJoinedDiscriminatorProperties(
832832
// we want to process the discriminator column if either:
833833
// 1) There is an explicit DiscriminatorColumn annotation && we are not told to ignore them
834834
// 2) There is not an explicit DiscriminatorColumn annotation && we are told to create them implicitly
835-
if ( ( discriminatorColumnAnnotation != null && !mappings.ignoreExplicitDiscriminatorColumnForJoinedInheritance() )
836-
|| ( discriminatorColumnAnnotation == null && mappings.useImplicitDiscriminatorColumnForJoinedInheritance() ) ) {
835+
final boolean generateDiscriminatorColumn;
836+
if ( discriminatorColumnAnnotation != null ) {
837+
if ( mappings.ignoreExplicitDiscriminatorColumnForJoinedInheritance() ) {
838+
LOG.debugf( "Ignoring explicit DiscriminatorColumn annotation on ", clazzToProcess.getName() );
839+
generateDiscriminatorColumn = false;
840+
}
841+
else {
842+
LOG.applyingExplicitDiscriminatorColumnForJoined(
843+
clazzToProcess.getName(),
844+
AvailableSettings.IGNORE_EXPLICIT_DISCRIMINATOR_COLUMNS_FOR_JOINED_SUBCLASS
845+
);
846+
generateDiscriminatorColumn = true;
847+
}
848+
}
849+
else {
850+
if ( mappings.useImplicitDiscriminatorColumnForJoinedInheritance() ) {
851+
LOG.debug( "Applying implicit DiscriminatorColumn using DiscriminatorColumn defaults" );
852+
generateDiscriminatorColumn = true;
853+
}
854+
else {
855+
LOG.debug( "Ignoring implicit (absent) DiscriminatorColumn" );
856+
generateDiscriminatorColumn = false;
857+
}
858+
}
859+
860+
if ( generateDiscriminatorColumn ) {
837861
final DiscriminatorType discriminatorType = discriminatorColumnAnnotation != null
838862
? discriminatorColumnAnnotation.discriminatorType()
839863
: DiscriminatorType.STRING;

hibernate-core/src/main/java/org/hibernate/internal/CoreMessageLogger.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1617,7 +1617,7 @@ void cannotResolveNonNullableTransientDependencies(String transientEntityString,
16171617
@Message( value = "'javax.persistence.validation.mode' named multiple values : %s", id = 448 )
16181618
void multipleValidationModes(String modes);
16191619

1620-
// id=449 & 450 used in 4.3
1620+
// id=449-450 used in 4.3
16211621

16221622
@LogMessage(level = WARN)
16231623
@Message(
@@ -1634,4 +1634,16 @@ void cannotResolveNonNullableTransientDependencies(String transientEntityString,
16341634
@LogMessage(level = WARN)
16351635
@Message(value = "Exception while discovering OSGi service implementations : %s", id = 453)
16361636
void unableToDiscoverOsgiService(String service, @Cause Exception e);
1637+
1638+
// id=454-456 used in 4.3
1639+
1640+
@LogMessage(level = WARN)
1641+
@Message(
1642+
id = 457,
1643+
value = "Joined inheritance hierarchy [%1$s] defined explicit @DiscriminatorColumn. Legacy Hibernate behavior " +
1644+
"was to ignore the @DiscriminatorColumn. However, as part of issue HHH-6911 we now apply the " +
1645+
"explicit @DiscriminatorColumn. If you would prefer the legacy behavior, enable the `%2$s` setting " +
1646+
"(%2$s=true)"
1647+
)
1648+
void applyingExplicitDiscriminatorColumnForJoined(String className, String overrideSetting);
16371649
}

0 commit comments

Comments
 (0)