@@ -521,9 +521,9 @@ private boolean mapAsIdClass(
521521 }
522522
523523 private ClassDetails idClassDetails (InheritanceState inheritanceState , ClassDetails classWithIdClass ) {
524- final var idClassAnn = classWithIdClass .getDirectAnnotationUsage ( IdClass .class );
524+ final var idClass = classWithIdClass .getDirectAnnotationUsage ( IdClass .class );
525525 final var classDetailsRegistry = modelsContext ().getClassDetailsRegistry ();
526- if ( idClassAnn == null ) {
526+ if ( idClass == null ) {
527527 try {
528528 // look for an Id class generated by Hibernate Processor as an inner class of static metamodel
529529 final var javaClass = inheritanceState .getClassDetails ().toJavaClass ();
@@ -535,7 +535,7 @@ private ClassDetails idClassDetails(InheritanceState inheritanceState, ClassDeta
535535 }
536536 }
537537 else {
538- return classDetailsRegistry .resolveClassDetails ( idClassAnn .value ().getName () );
538+ return classDetailsRegistry .resolveClassDetails ( idClass .value ().getName () );
539539 }
540540 }
541541
@@ -1030,7 +1030,7 @@ private boolean useDiscriminatorColumnForJoined(DiscriminatorColumn discriminato
10301030 if ( ignore ) {
10311031 if ( log .isTraceEnabled () ) {
10321032 log .trace ( "Ignoring explicit @DiscriminatorColumn annotation on: "
1033- + annotatedClass .getName () );
1033+ + annotatedClass .getName () );
10341034 }
10351035 }
10361036 return !ignore ;
@@ -1057,7 +1057,7 @@ private void processIdPropertiesIfNotAlready(
10571057 Map <ClassDetails , InheritanceState > inheritanceStates ) {
10581058 final Set <String > missingIdProperties = new HashSet <>( idPropertiesIfIdClass );
10591059 final Set <String > missingEntityProperties = new HashSet <>();
1060- for ( PropertyData propertyAnnotatedElement : elementsToProcess .getElements () ) {
1060+ for ( var propertyAnnotatedElement : elementsToProcess .getElements () ) {
10611061 final String propertyName = propertyAnnotatedElement .getPropertyName ();
10621062 if ( !idPropertiesIfIdClass .contains ( propertyName ) ) {
10631063 final var memberDetails = propertyAnnotatedElement .getAttributeMember ();
@@ -1224,28 +1224,25 @@ public boolean isPropertyDefinedInSuperHierarchy(String name) {
12241224 }
12251225
12261226 private void bindRowManagement () {
1227- final var ontext = modelsContext ();
1228- final var dynamicInsertAnn = annotatedClass .getAnnotationUsage ( DynamicInsert .class , ontext );
1229- persistentClass .setDynamicInsert ( dynamicInsertAnn != null );
1230-
1231- final var dynamicUpdateAnn = annotatedClass .getAnnotationUsage ( DynamicUpdate .class , ontext );
1232- persistentClass .setDynamicUpdate ( dynamicUpdateAnn != null );
1227+ final var modelsContext = modelsContext ();
1228+ final var dynamicInsert = annotatedClass .hasAnnotationUsage ( DynamicInsert .class , modelsContext );
1229+ final var dynamicUpdate = annotatedClass .hasAnnotationUsage ( DynamicUpdate .class , modelsContext );
1230+ persistentClass .setDynamicInsert ( dynamicInsert );
1231+ persistentClass .setDynamicUpdate ( dynamicUpdate );
12331232
1234- if ( persistentClass .useDynamicInsert ()
1235- && annotatedClass .hasAnnotationUsage ( SQLInsert .class , ontext ) ) {
1233+ if ( dynamicInsert && annotatedClass .hasAnnotationUsage ( SQLInsert .class , modelsContext ) ) {
12361234 throw new AnnotationException ( "Entity '" + name + "' is annotated both '@DynamicInsert' and '@SQLInsert'" );
12371235 }
1238- if ( persistentClass .useDynamicUpdate ()
1239- && annotatedClass .hasAnnotationUsage ( SQLUpdate .class , ontext ) ) {
1236+ if ( dynamicUpdate && annotatedClass .hasAnnotationUsage ( SQLUpdate .class , modelsContext ) ) {
12401237 throw new AnnotationException ( "Entity '" + name + "' is annotated both '@DynamicUpdate' and '@SQLUpdate'" );
12411238 }
12421239 }
12431240
12441241 private void bindOptimisticLocking () {
1245- final var optimisticLockingAnn = annotatedClass .getAnnotationUsage ( OptimisticLocking .class , modelsContext () );
1246- persistentClass .setOptimisticLockStyle ( fromLockType ( optimisticLockingAnn == null
1242+ final var optimisticLocking = annotatedClass .getAnnotationUsage ( OptimisticLocking .class , modelsContext () );
1243+ persistentClass .setOptimisticLockStyle ( fromLockType ( optimisticLocking == null
12471244 ? OptimisticLockType .VERSION
1248- : optimisticLockingAnn .type () ) );
1245+ : optimisticLocking .type () ) );
12491246 }
12501247
12511248 private void bindEntityAnnotation () {
@@ -1560,27 +1557,26 @@ private NamedEntityGraphDefinition namedEntityGraphDefinition(org.hibernate.anno
15601557
15611558 private void bindDiscriminatorValue () {
15621559 final var discriminatorValue = annotatedClass .getAnnotationUsage ( DiscriminatorValue .class , modelsContext () );
1560+ persistentClass .setDiscriminatorValue ( discriminatorValueString ( discriminatorValue ) );
1561+ }
1562+
1563+ private String discriminatorValueString (DiscriminatorValue discriminatorValue ) {
15631564 if ( discriminatorValue == null ) {
1564- final Value discriminator = persistentClass .getDiscriminator ();
1565+ final var discriminator = persistentClass .getDiscriminator ();
15651566 if ( discriminator == null ) {
1566- persistentClass . setDiscriminatorValue ( name ) ;
1567+ return name ;
15671568 }
15681569 else {
1569- switch ( discriminator .getType ().getName () ) {
1570- case "character" :
1571- throw new AnnotationException ( "Entity '" + name
1572- + "' has a discriminator of character type and must specify its '@DiscriminatorValue'" );
1573- case "integer" :
1574- // TODO: pretty nasty, should we just deprecate/disallow this?
1575- persistentClass .setDiscriminatorValue ( String .valueOf ( name .hashCode () ) );
1576- break ;
1577- default :
1578- persistentClass .setDiscriminatorValue ( name ); //Spec compliant
1579- }
1570+ final String discriminatorTypeName = discriminator .getType ().getName ();
1571+ return switch ( discriminatorTypeName ) {
1572+ case "string" -> name ; //Spec compliant
1573+ case "integer" -> String .valueOf ( name .hashCode () ); // TODO: pretty nasty, should we just deprecate/disallow this?
1574+ default -> throw new MappingException ( "Entity '" + name + "' must explicitly specify its '@DiscriminatorValue'" );
1575+ };
15801576 }
15811577 }
15821578 else {
1583- persistentClass . setDiscriminatorValue ( discriminatorValue .value () );
1579+ return discriminatorValue .value ();
15841580 }
15851581 }
15861582
@@ -1665,7 +1661,7 @@ private void bindSubclassCache() {
16651661 +" (only root classes may define second-level caching semantics)" );
16661662 }
16671663
1668- final Cacheable cacheable = annotatedClass .getAnnotationUsage ( Cacheable .class , modelsContext () );
1664+ final var cacheable = annotatedClass .getAnnotationUsage ( Cacheable .class , modelsContext () );
16691665 isCached = cacheable == null && persistentClass .getSuperclass () != null
16701666 // we should inherit the root class caching config
16711667 ? persistentClass .getSuperclass ().isCached ()
0 commit comments