Skip to content

Commit 5999ca0

Browse files
committed
[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 a6ffa29 commit 5999ca0

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
@@ -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 ) {

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
@@ -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

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+
193200
public static AnnotationMetaEntity create(TypeElement element, Context context, @Nullable AnnotationMetaEntity parent) {
194-
return create( element,context, false, false, false, parent );
201+
return create( element,context, false, false, false, parent, 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)