Skip to content

Commit 46afa23

Browse files
FroMagegavinking
authored andcommitted
[HHH-19586] For Panache2, allow repositories to have a primary entity auto-detected
Since repositories can be nested in entities, we can use the outer type
1 parent 7126e07 commit 46afa23

File tree

3 files changed

+18
-8
lines changed

3 files changed

+18
-8
lines changed

tooling/metamodel-generator/src/main/java/org/hibernate/processor/HibernateProcessor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -671,7 +671,7 @@ private void handleRootElementAnnotationMirrors(final Element element, @Nullable
671671
final AnnotationMetaEntity metaEntity =
672672
AnnotationMetaEntity.create( typeElement, context,
673673
requiresLazyMemberInitialization,
674-
true, false, parentMetaEntity );
674+
true, false, parentMetaEntity, typeElement );
675675
if ( alreadyExistingMetaEntity != null ) {
676676
metaEntity.mergeInMembers( alreadyExistingMetaEntity );
677677
}
@@ -690,7 +690,7 @@ && hasAnnotation( element, ENTITY, MAPPED_SUPERCLASS )
690690
final AnnotationMetaEntity dataMetaEntity =
691691
AnnotationMetaEntity.create( typeElement, context,
692692
requiresLazyMemberInitialization,
693-
true, true, parentDataEntity );
693+
true, true, parentDataEntity, typeElement );
694694
// final Metamodel alreadyExistingDataMetaEntity =
695695
// tryGettingExistingDataEntityFromContext( mirror, '_' + qualifiedName );
696696
// if ( alreadyExistingDataMetaEntity != null ) {

tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/AnnotationMetaEntity.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,8 @@ public class AnnotationMetaEntity extends AnnotationMeta {
175175
public AnnotationMetaEntity(
176176
TypeElement element, Context context, boolean managed,
177177
boolean jakartaDataStaticMetamodel,
178-
@Nullable AnnotationMeta parent) {
178+
@Nullable AnnotationMeta parent,
179+
@Nullable TypeElement primaryEntity) {
179180
this.element = element;
180181
this.context = context;
181182
this.managed = managed;
@@ -184,6 +185,7 @@ public AnnotationMetaEntity(
184185
this.springInjection = context.isSpringInjection();
185186
this.importContext = parent != null ? parent : new ImportContextImpl( getPackageName( context, element ) );
186187
jakartaDataStaticModel = jakartaDataStaticMetamodel;
188+
this.primaryEntity = primaryEntity;
187189
importContext.importType(
188190
getGeneratedClassFullyQualifiedName( element, getPackageName( context, element ),
189191
jakartaDataStaticModel ) );
@@ -192,17 +194,23 @@ public AnnotationMetaEntity(
192194
}
193195
}
194196

197+
public static AnnotationMetaEntity create(TypeElement element, Context context, @Nullable AnnotationMetaEntity parent,
198+
@Nullable TypeElement primaryEntity) {
199+
return create( element,context, false, false, false, parent, primaryEntity );
200+
}
201+
195202
public static AnnotationMetaEntity create(TypeElement element, Context context, @Nullable AnnotationMetaEntity parent) {
196-
return create( element,context, false, false, false, parent );
203+
return create( element,context, false, false, false, parent, null );
197204
}
198205

199206
public static AnnotationMetaEntity create(
200207
TypeElement element, Context context,
201208
boolean lazilyInitialised, boolean managed,
202209
boolean jakartaData,
203-
@Nullable AnnotationMetaEntity parent) {
210+
@Nullable AnnotationMetaEntity parent,
211+
@Nullable TypeElement primaryEntity) {
204212
final AnnotationMetaEntity annotationMetaEntity =
205-
new AnnotationMetaEntity( element, context, managed, jakartaData, parent );
213+
new AnnotationMetaEntity( element, context, managed, jakartaData, parent, primaryEntity );
206214
if ( parent != null ) {
207215
parent.addInnerClass( annotationMetaEntity );
208216
}
@@ -419,8 +427,10 @@ else if ( method.getEnclosingElement().getKind().isInterface()
419427
}
420428
}
421429

422-
primaryEntity = primaryEntity( lifecycleMethods );
423430
final boolean hibernateRepo = isExplicitlyHibernateRepository();
431+
if ( primaryEntity == null ) {
432+
primaryEntity = primaryEntity( lifecycleMethods );
433+
}
424434
if ( !checkEntity( primaryEntity, hibernateRepo )
425435
|| !checkEntities( lifecycleMethods, hibernateRepo ) ) {
426436
// NOTE EARLY EXIT with initialized = false

tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/NonManagedMetamodel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
public class NonManagedMetamodel extends AnnotationMetaEntity {
1313

1414
public NonManagedMetamodel(TypeElement element, Context context, boolean jakartaDataStaticMetamodel, @Nullable AnnotationMeta parent) {
15-
super( element, context, false, jakartaDataStaticMetamodel, parent );
15+
super( element, context, false, jakartaDataStaticMetamodel, parent, null );
1616
}
1717

1818
public static NonManagedMetamodel create(

0 commit comments

Comments
 (0)