Skip to content

Commit c3e659d

Browse files
committed
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 7205879 commit c3e659d

File tree

3 files changed

+22
-11
lines changed

3 files changed

+22
-11
lines changed

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ private void processClasses(RoundEnvironment roundEnvironment) {
382382
try {
383383
final AnnotationMetaEntity metaEntity =
384384
AnnotationMetaEntity.create( typeElement, context,
385-
parentMetadata( typeElement, context::getMetaEntity ) );
385+
parentMetadata( typeElement, context::getMetaEntity ), null );
386386
context.addMetaAuxiliary( metaEntity.getQualifiedName(), metaEntity );
387387
context.removeElementToRedo( elementName );
388388
}
@@ -662,7 +662,7 @@ private void handleRootElementAnnotationMirrors(final Element element, @Nullable
662662
final AnnotationMetaEntity metaEntity =
663663
AnnotationMetaEntity.create( typeElement, context,
664664
requiresLazyMemberInitialization,
665-
true, false, parentMetaEntity );
665+
true, false, parentMetaEntity, typeElement );
666666
if ( alreadyExistingMetaEntity != null ) {
667667
metaEntity.mergeInMembers( alreadyExistingMetaEntity );
668668
}
@@ -681,7 +681,7 @@ && hasAnnotation( element, ENTITY, MAPPED_SUPERCLASS )
681681
final AnnotationMetaEntity dataMetaEntity =
682682
AnnotationMetaEntity.create( typeElement, context,
683683
requiresLazyMemberInitialization,
684-
true, true, parentDataEntity );
684+
true, true, parentDataEntity, typeElement );
685685
// final Metamodel alreadyExistingDataMetaEntity =
686686
// tryGettingExistingDataEntityFromContext( mirror, '_' + qualifiedName );
687687
// if ( alreadyExistingDataMetaEntity != null ) {
@@ -758,7 +758,8 @@ private void handleRootElementAuxiliaryAnnotationMirrors(final Element element)
758758
if ( element instanceof TypeElement ) {
759759
final AnnotationMetaEntity metaEntity =
760760
AnnotationMetaEntity.create( (TypeElement) element, context,
761-
parentMetadata( element.getEnclosingElement(), context::getMetaEntity ) );
761+
parentMetadata( element.getEnclosingElement(), context::getMetaEntity ),
762+
null );
762763
context.addMetaAuxiliary( metaEntity.getQualifiedName(), metaEntity );
763764
}
764765
else if ( element instanceof PackageElement ) {

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

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -174,14 +174,16 @@ public class AnnotationMetaEntity extends AnnotationMeta {
174174
public AnnotationMetaEntity(
175175
TypeElement element, Context context, boolean managed,
176176
boolean jakartaDataStaticMetamodel,
177-
@Nullable AnnotationMeta parent) {
177+
@Nullable AnnotationMeta parent,
178+
@Nullable TypeElement primaryEntity) {
178179
this.element = element;
179180
this.context = context;
180181
this.managed = managed;
181182
this.members = new LinkedHashMap<>();
182183
this.quarkusInjection = context.isQuarkusInjection();
183184
this.importContext = parent != null ? parent : new ImportContextImpl( getPackageName( context, element ) );
184185
jakartaDataStaticModel = jakartaDataStaticMetamodel;
186+
this.primaryEntity = primaryEntity;
185187
importContext.importType(
186188
getGeneratedClassFullyQualifiedName( element, getPackageName( context, element ),
187189
jakartaDataStaticModel ) );
@@ -190,17 +192,23 @@ public AnnotationMetaEntity(
190192
}
191193
}
192194

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

197204
public static AnnotationMetaEntity create(
198205
TypeElement element, Context context,
199206
boolean lazilyInitialised, boolean managed,
200207
boolean jakartaData,
201-
@Nullable AnnotationMetaEntity parent) {
208+
@Nullable AnnotationMetaEntity parent,
209+
@Nullable TypeElement primaryEntity) {
202210
final AnnotationMetaEntity annotationMetaEntity =
203-
new AnnotationMetaEntity( element, context, managed, jakartaData, parent );
211+
new AnnotationMetaEntity( element, context, managed, jakartaData, parent, primaryEntity );
204212
if ( parent != null ) {
205213
parent.addInnerClass( annotationMetaEntity );
206214
}
@@ -417,8 +425,10 @@ else if ( method.getEnclosingElement().getKind().isInterface()
417425
}
418426
}
419427

420-
primaryEntity = primaryEntity( lifecycleMethods );
421428
final boolean hibernateRepo = isExplicitlyHibernateRepository();
429+
if ( primaryEntity == null ) {
430+
primaryEntity = primaryEntity( lifecycleMethods );
431+
}
422432
if ( !checkEntity( primaryEntity, hibernateRepo )
423433
|| !checkEntities( lifecycleMethods, hibernateRepo ) ) {
424434
// 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)