From eb63da955927543ba087385b23b49aa9d0b066a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=8Cedomir=20Igaly?= Date: Sun, 30 Mar 2025 14:07:50 +0200 Subject: [PATCH 1/2] HHH-19301 Test case - generating meta model class from inner Jakarta Data repository --- .../data/innerclass/InnerRepositoryTest.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 tooling/metamodel-generator/src/jakartaData/java/org/hibernate/processor/test/data/innerclass/InnerRepositoryTest.java diff --git a/tooling/metamodel-generator/src/jakartaData/java/org/hibernate/processor/test/data/innerclass/InnerRepositoryTest.java b/tooling/metamodel-generator/src/jakartaData/java/org/hibernate/processor/test/data/innerclass/InnerRepositoryTest.java new file mode 100644 index 000000000000..d1885c20d6a8 --- /dev/null +++ b/tooling/metamodel-generator/src/jakartaData/java/org/hibernate/processor/test/data/innerclass/InnerRepositoryTest.java @@ -0,0 +1,43 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.processor.test.data.innerclass; + +import jakarta.data.page.Page; +import jakarta.data.page.PageRequest; +import jakarta.data.repository.DataRepository; +import jakarta.data.repository.Find; +import jakarta.data.repository.Repository; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import org.hibernate.processor.test.util.CompilationTest; +import org.hibernate.processor.test.util.WithClasses; +import org.junit.Test; + +import static org.hibernate.processor.test.util.TestUtil.assertMetamodelClassGeneratedFor; +import static org.hibernate.processor.test.util.TestUtil.getMetaModelSourceAsString; + +public class InnerRepositoryTest extends CompilationTest { + + @Test + @WithClasses({Thing.class, ThingRepo.class}) + public void test() { + System.out.println( getMetaModelSourceAsString( ThingRepo.class ) ); + assertMetamodelClassGeneratedFor( ThingRepo.class ); + } + + @Entity + public static class Thing { + @Id + Long id; + + String data; + } + + @Repository + public interface ThingRepo extends DataRepository { + @Find + Page thing(PageRequest pageRequest); + } +} From 3cfb5527007102e66a4feb1b2515a3b54271435a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=8Cedomir=20Igaly?= Date: Sun, 30 Mar 2025 11:54:13 +0200 Subject: [PATCH 2/2] HHH-19301 Importing element FQCN in org.hibernate.processor.annotation.AnnotationMetaEntity constructor Not importing if FQCN ends with dollar sign --- .../hibernate/processor/annotation/AnnotationMetaEntity.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/AnnotationMetaEntity.java b/tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/AnnotationMetaEntity.java index 02575440a96c..c411be01ad67 100644 --- a/tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/AnnotationMetaEntity.java +++ b/tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/AnnotationMetaEntity.java @@ -183,6 +183,9 @@ public AnnotationMetaEntity( importContext.importType( getGeneratedClassFullyQualifiedName( element, getPackageName( context, element ), jakartaDataStaticModel ) ); + if ( !element.getQualifiedName().toString().endsWith( "$" ) ) { + importContext.importType( element.getQualifiedName().toString() ); + } } public static AnnotationMetaEntity create(TypeElement element, Context context, @Nullable AnnotationMetaEntity parent) {