Skip to content

Commit 62ad590

Browse files
committed
HHH-19209 Fixed name resolution for autogenerated ID class name when entity class is inner class
1 parent 870b4fb commit 62ad590

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

hibernate-core/src/main/java/org/hibernate/boot/model/internal/EntityBinder.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,8 @@ private ClassDetails idClassDetails(InheritanceState inheritanceState, ClassDeta
551551
if ( idClassAnn == null ) {
552552
try {
553553
// look for an Id class generated by Hibernate Processor as an inner class of static metamodel
554-
final String generatedIdClassName = inheritanceState.getClassDetails().getClassName() + "_$Id";
554+
final Class<Object> javaClass = inheritanceState.getClassDetails().toJavaClass();
555+
final String generatedIdClassName = getGeneratedClassName( javaClass ) + "$Id";
555556
return classDetailsRegistry.resolveClassDetails( generatedIdClassName );
556557
}
557558
catch (RuntimeException e) {
@@ -563,6 +564,12 @@ private ClassDetails idClassDetails(InheritanceState inheritanceState, ClassDeta
563564
}
564565
}
565566

567+
private static String getGeneratedClassName(Class<?> javaClass) {
568+
return javaClass.isMemberClass()
569+
? getGeneratedClassName( javaClass.getEnclosingClass() ) + "$" + javaClass.getSimpleName() + "_"
570+
: javaClass.getName() + "_";
571+
}
572+
566573
private Component createMapperProperty(
567574
Map<ClassDetails, InheritanceState> inheritanceStates,
568575
PersistentClass persistentClass,

0 commit comments

Comments
 (0)