quarkusio / quarkus

Quarkus: Supersonic Subatomic Java.
https://quarkus.io
Apache License 2.0
13.82k stars 2.69k forks source link

Regression in 3.11.0: jpamodelgen WITH ECLIPSE COMPILER does not run and logs a warning: "Both Quarkus Hibernate ORM and Hibernate Reactive with Panache detected: this is not supported, so will proceed as if none were there" #40809

Closed famod closed 3 months ago

famod commented 5 months ago

Describe the bug

I'm leveraging https://github.com/quarkusio/quarkus/blob/3.11.0/bom/application/pom.xml#L5168-L5172 in annotationProcessorPaths of maven-compiler-plugin so that I don't need to specify an explicit version (that needs to be compatible to the actual Hibernate version in Quarkus). Since Quarkus 3.11.0 has updated to Hibernate 6.5.2.Final, the annotation processor is also updated for that version (coming from 6.4.7.Final in Quarkus 3.10.2).

Thing is I haven't structurally changed any dependencies, just tired updating. I cannot spot any Hibernate Reactive (nor Panache) dependencies in my dep tree so I'm puzzled why this bit in jpamodelgen seems to be finding a io.quarkus.hibernate.reactive.panache package.

This might actually be an upstream issue in Hibernate but for a start I chose to report it here.

Expected behavior

Working jpamodelgen like in 3.10.2

Actual behavior

jpamodelgen does not generate metamodel classes anymore and logs a warning, consequently my app doesn't compile anymore.

How to Reproduce?

n/a for now

Output of uname -a or ver

No response

Output of java -version

17.0.11

Quarkus version or git rev

3.11.0

Build tool (ie. output of mvnw --version or gradlew --version)

No response

Additional information

[INFO] --- dependency:3.6.1:tree (default-cli) @ register-core ---
[INFO] someproj:register-core:jar:5.1.0.local-dev3
[INFO] +- someproj:healthcore:jar:1.0.0.91:compile
[INFO] |  +- io.quarkus:quarkus-jackson:jar:3.11.0:compile
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.17.1:compile
[INFO] |  |  |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.17.1:compile
[INFO] |  |  |  \- com.fasterxml.jackson.core:jackson-core:jar:2.17.1:compile
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.17.1:compile
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.17.1:compile
[INFO] |  |  \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.17.1:compile
[INFO] |  +- jakarta.ws.rs:jakarta.ws.rs-api:jar:3.1.0:compile
[INFO] |  +- org.apache.httpcomponents:httpcore:jar:4.4.16:compile
[INFO] |  +- jakarta.validation:jakarta.validation-api:jar:3.0.2:compile
[INFO] |  +- org.hibernate.orm:hibernate-core:jar:6.5.2.Final:compile
[INFO] |  |  +- jakarta.persistence:jakarta.persistence-api:jar:3.1.0:compile
[INFO] |  |  +- jakarta.transaction:jakarta.transaction-api:jar:2.0.1:compile
[INFO] |  |  +- org.jboss.logging:jboss-logging:jar:3.5.3.Final:compile
[INFO] |  |  +- org.hibernate.common:hibernate-commons-annotations:jar:6.0.6.Final:compile
[INFO] |  |  +- com.fasterxml:classmate:jar:1.7.0:compile
[INFO] |  |  +- jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.2:compile
[INFO] |  |  |  \- jakarta.activation:jakarta.activation-api:jar:2.1.3:compile
[INFO] |  |  +- org.glassfish.jaxb:jaxb-runtime:jar:4.0.5:compile
[INFO] |  |  |  \- org.glassfish.jaxb:jaxb-core:jar:4.0.5:compile
[INFO] |  |  |     +- org.eclipse.angus:angus-activation:jar:2.0.2:runtime
[INFO] |  |  |     +- org.glassfish.jaxb:txw2:jar:4.0.5:compile
[INFO] |  |  |     \- com.sun.istack:istack-commons-runtime:jar:4.1.2:compile
[INFO] |  |  +- jakarta.inject:jakarta.inject-api:jar:2.0.1:compile
[INFO] |  |  \- org.antlr:antlr4-runtime:jar:4.13.0:compile
[INFO] |  +- io.quarkus:quarkus-spring-boot-orm-api:jar:2.1.SP1:compile
[INFO] |  +- io.quarkus:quarkus-spring-data-commons-api:jar:2.1.SP2:compile
[INFO] |  +- io.quarkus:quarkus-spring-data-jpa-api:jar:2.1.SP2:compile
[INFO] |  +- com.blazebit:blaze-persistence-core-api-jakarta:jar:1.6.11:compile
[INFO] |  +- com.blazebit:blaze-persistence-entity-view-api-jakarta:jar:1.6.11:compile
[INFO] |  \- commons-io:commons-io:jar:2.16.1:compile
[INFO] +- someproj:register-common:jar:5.1.0.local-dev3:compile
[INFO] |  +- io.quarkus:quarkus-config-yaml:jar:3.11.0:compile
[INFO] |  |  +- io.smallrye.config:smallrye-config-source-yaml:jar:3.8.1:compile
[INFO] |  |  |  +- io.smallrye.config:smallrye-config-common:jar:3.8.1:compile
[INFO] |  |  |  |  \- io.smallrye.common:smallrye-common-classloader:jar:2.3.0:compile
[INFO] |  |  |  \- io.smallrye.common:smallrye-common-constraint:jar:2.3.0:compile
[INFO] |  |  \- org.eclipse.microprofile.config:microprofile-config-api:jar:3.1:compile
[INFO] |  +- io.quarkus:quarkus-hibernate-orm:jar:3.11.0:compile
[INFO] |  |  +- org.hibernate.orm:hibernate-graalvm:jar:6.5.2.Final:compile
[INFO] |  |  +- org.hibernate:quarkus-local-cache:jar:0.3.0:compile
[INFO] |  |  \- io.quarkus:quarkus-caffeine:jar:3.11.0:compile
[INFO] |  |     \- com.github.ben-manes.caffeine:caffeine:jar:3.1.5:compile
[INFO] |  |        \- com.google.errorprone:error_prone_annotations:jar:2.27.1:compile
[INFO] |  +- io.quarkus:quarkus-hibernate-validator:jar:3.11.0:compile
[INFO] |  |  +- org.hibernate.validator:hibernate-validator:jar:8.0.1.Final:compile
[INFO] |  |  \- io.smallrye.config:smallrye-config-validator:jar:3.8.1:compile
[INFO] |  +- io.quarkus:quarkus-jdbc-mariadb:jar:3.11.0:compile
[INFO] |  |  \- org.mariadb.jdbc:mariadb-java-client:jar:3.3.3:compile
[INFO] |  |     \- com.github.waffle:waffle-jna:jar:3.3.0:compile
[INFO] |  |        \- net.java.dev.jna:jna-platform:jar:5.8.0:compile
[INFO] |  +- io.quarkus:quarkus-scheduler-common:jar:3.11.0:compile
[INFO] |  |  +- io.quarkus:quarkus-scheduler-api:jar:3.11.0:compile
[INFO] |  |  +- io.quarkus:quarkus-scheduler-spi:jar:3.11.0:compile
[INFO] |  |  +- io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:jar:1.32.0:compile
[INFO] |  |  |  \- io.opentelemetry:opentelemetry-extension-incubator:jar:1.32.0-alpha:runtime
[INFO] |  |  \- com.cronutils:cron-utils:jar:9.2.1:compile
[INFO] |  +- io.quarkus:quarkus-opentelemetry:jar:3.11.0:compile
[INFO] |  |  +- io.quarkus:quarkus-security-runtime-spi:jar:3.11.0:compile
[INFO] |  |  |  \- io.quarkus.security:quarkus-security:jar:2.0.3.Final:compile
[INFO] |  |  +- io.quarkus:quarkus-grpc-common:jar:3.11.0:compile
[INFO] |  |  |  +- io.vertx:vertx-grpc:jar:4.5.7:compile
[INFO] |  |  |  |  +- io.grpc:grpc-netty:jar:1.63.0:compile
[INFO] |  |  |  |  |  \- io.grpc:grpc-util:jar:1.63.0:runtime
[INFO] |  |  |  |  +- io.grpc:grpc-protobuf:jar:1.63.0:compile
[INFO] |  |  |  |  |  +- com.google.protobuf:protobuf-java:jar:3.25.0:compile
[INFO] |  |  |  |  |  +- com.google.api.grpc:proto-google-common-protos:jar:2.39.0:compile
[INFO] |  |  |  |  |  \- io.grpc:grpc-protobuf-lite:jar:1.63.0:runtime
[INFO] |  |  |  |  \- com.google.guava:guava:jar:33.2.0-jre:compile
[INFO] |  |  |  |     \- com.google.j2objc:j2objc-annotations:jar:2.8:compile
[INFO] |  |  |  +- io.vertx:vertx-grpc-server:jar:4.5.7:compile
[INFO] |  |  |  \- io.grpc:grpc-core:jar:1.63.0:compile
[INFO] |  |  |     +- com.google.code.gson:gson:jar:2.10.1:runtime
[INFO] |  |  |     +- io.perfmark:perfmark-api:jar:0.26.0:runtime
[INFO] |  |  |     \- io.grpc:grpc-context:jar:1.63.0:runtime
[INFO] |  |  +- io.smallrye.common:smallrye-common-vertx-context:jar:2.3.0:compile
[INFO] |  |  +- io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:jar:1.32.0:compile
[INFO] |  |  +- io.opentelemetry:opentelemetry-sdk:jar:1.32.0:compile
[INFO] |  |  |  +- io.opentelemetry:opentelemetry-sdk-common:jar:1.32.0:compile
[INFO] |  |  |  +- io.opentelemetry:opentelemetry-sdk-trace:jar:1.32.0:compile
[INFO] |  |  |  +- io.opentelemetry:opentelemetry-sdk-metrics:jar:1.32.0:compile
[INFO] |  |  |  \- io.opentelemetry:opentelemetry-sdk-logs:jar:1.32.0:compile
[INFO] |  |  +- io.opentelemetry:opentelemetry-extension-annotations:jar:1.18.0:compile
[INFO] |  |  +- io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:jar:1.32.0:compile
[INFO] |  |  +- io.opentelemetry.semconv:opentelemetry-semconv:jar:1.21.0-alpha:compile
[INFO] |  |  +- io.opentelemetry:opentelemetry-api-events:jar:1.32.0-alpha:compile
[INFO] |  |  +- io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations:jar:1.32.0:compile
[INFO] |  |  +- io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations-support:jar:1.32.0-alpha:compile
[INFO] |  |  +- io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-semconv:jar:1.32.0-alpha:compile
[INFO] |  |  +- io.opentelemetry:opentelemetry-exporter-otlp-common:jar:1.32.0:compile
[INFO] |  |  |  \- io.opentelemetry:opentelemetry-exporter-common:jar:1.32.0:compile
[INFO] |  |  +- io.opentelemetry:opentelemetry-exporter-otlp:jar:1.32.0:compile
[INFO] |  |  |  \- io.opentelemetry:opentelemetry-exporter-sender-okhttp:jar:1.32.0:runtime
[INFO] |  |  \- io.vertx:vertx-grpc-client:jar:4.5.7:compile
[INFO] |  |     +- io.vertx:vertx-grpc-common:jar:4.5.7:compile
[INFO] |  |     +- io.grpc:grpc-stub:jar:1.63.0:compile
[INFO] |  |     \- io.grpc:grpc-api:jar:1.63.0:compile
[INFO] |  +- io.opentelemetry.instrumentation:opentelemetry-jdbc:jar:1.32.0-alpha:compile
[INFO] |  |  \- io.opentelemetry:opentelemetry-api:jar:1.32.0:compile
[INFO] |  |     \- io.opentelemetry:opentelemetry-context:jar:1.32.0:compile
[INFO] |  +- io.smallrye:smallrye-health:jar:4.1.0:compile
[INFO] |  |  +- org.eclipse.microprofile.health:microprofile-health-api:jar:4.0.1:compile
[INFO] |  |  +- io.smallrye:smallrye-health-api:jar:4.1.0:compile
[INFO] |  |  +- io.smallrye.config:smallrye-config:jar:3.8.1:compile
[INFO] |  |  |  \- io.smallrye.config:smallrye-config-core:jar:3.8.1:compile
[INFO] |  |  +- jakarta.enterprise:jakarta.enterprise.cdi-api:jar:4.1.0:compile
[INFO] |  |  |  +- jakarta.enterprise:jakarta.enterprise.lang-model:jar:4.1.0:compile
[INFO] |  |  |  \- jakarta.interceptor:jakarta.interceptor-api:jar:2.2.0:compile
[INFO] |  |  +- jakarta.json:jakarta.json-api:jar:2.1.3:compile
[INFO] |  |  \- org.eclipse.parsson:jakarta.json:jar:1.1.5:compile
[INFO] |  \- jakarta.xml.ws:jakarta.xml.ws-api:jar:3.0.1:compile
[INFO] |     +- jakarta.xml.soap:jakarta.xml.soap-api:jar:2.0.1:compile
[INFO] |     \- jakarta.jws:jakarta.jws-api:jar:3.0.0:compile
[INFO] +- io.quarkus:quarkus-qute:jar:3.11.0:compile
[INFO] |  +- io.quarkus:quarkus-core:jar:3.11.0:compile
[INFO] |  |  +- jakarta.annotation:jakarta.annotation-api:jar:3.0.0:compile
[INFO] |  |  +- io.smallrye.common:smallrye-common-os:jar:2.3.0:compile
[INFO] |  |  +- io.quarkus:quarkus-ide-launcher:jar:3.11.0:compile
[INFO] |  |  +- io.quarkus:quarkus-development-mode-spi:jar:3.11.0:compile
[INFO] |  |  +- org.jboss.logmanager:jboss-logmanager:jar:3.0.6.Final:compile
[INFO] |  |  |  +- io.smallrye.common:smallrye-common-cpu:jar:2.3.0:compile
[INFO] |  |  |  +- io.smallrye.common:smallrye-common-expression:jar:2.3.0:compile
[INFO] |  |  |  |  \- io.smallrye.common:smallrye-common-function:jar:2.3.0:compile
[INFO] |  |  |  +- io.smallrye.common:smallrye-common-net:jar:2.3.0:compile
[INFO] |  |  |  +- io.smallrye.common:smallrye-common-ref:jar:2.3.0:compile
[INFO] |  |  |  \- org.eclipse.parsson:parsson:jar:1.1.6:compile
[INFO] |  |  +- org.jboss.logging:jboss-logging-annotations:jar:2.2.1.Final:compile
[INFO] |  |  +- org.jboss.threads:jboss-threads:jar:3.6.1.Final:compile
[INFO] |  |  +- org.slf4j:slf4j-api:jar:2.0.6:compile
[INFO] |  |  +- org.wildfly.common:wildfly-common:jar:1.7.0.Final:compile
[INFO] |  |  +- io.quarkus:quarkus-bootstrap-runner:jar:3.11.0:compile
[INFO] |  |  |  \- io.github.crac:org-crac:jar:0.1.3:compile
[INFO] |  |  \- io.quarkus:quarkus-fs-util:jar:0.0.10:compile
[INFO] |  +- io.quarkus:quarkus-arc:jar:3.11.0:compile
[INFO] |  |  +- io.quarkus.arc:arc:jar:3.11.0:compile
[INFO] |  |  \- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:jar:1.3:compile
[INFO] |  \- io.quarkus.qute:qute-core:jar:3.11.0:compile
[INFO] |     \- io.smallrye.reactive:mutiny:jar:2.6.0:compile
[INFO] |        \- org.jctools:jctools-core:jar:4.0.3:compile
[INFO] +- io.quarkus:quarkus-liquibase:jar:3.11.0:compile
[INFO] |  +- org.liquibase:liquibase-core:jar:4.27.0:compile
[INFO] |  |  +- com.opencsv:opencsv:jar:5.9:compile
[INFO] |  |  +- org.apache.commons:commons-text:jar:1.12.0:compile
[INFO] |  |  \- org.apache.commons:commons-collections4:jar:4.4:compile
[INFO] |  +- org.osgi:osgi.core:jar:6.0.0:compile
[INFO] |  +- org.yaml:snakeyaml:jar:2.2:compile
[INFO] |  +- io.quarkus:quarkus-jaxb:jar:3.11.0:compile
[INFO] |  |  \- io.quarkus:quarkus-jaxp:jar:3.11.0:compile
[INFO] |  +- io.quarkus:quarkus-agroal:jar:3.11.0:compile
[INFO] |  |  +- io.quarkus:quarkus-datasource:jar:3.11.0:compile
[INFO] |  |  +- io.agroal:agroal-api:jar:2.3:compile
[INFO] |  |  +- io.agroal:agroal-narayana:jar:2.3:compile
[INFO] |  |  |  \- org.jboss:jboss-transaction-spi:jar:8.0.0.Final:compile
[INFO] |  |  +- io.agroal:agroal-pool:jar:2.3:compile
[INFO] |  |  \- io.quarkus:quarkus-credentials:jar:3.11.0:compile
[INFO] |  +- io.quarkus:quarkus-datasource-common:jar:3.11.0:compile
[INFO] |  \- io.quarkus:quarkus-narayana-jta:jar:3.11.0:compile
[INFO] |     +- io.quarkus:quarkus-transaction-annotations:jar:3.11.0:compile
[INFO] |     +- io.smallrye:smallrye-context-propagation-jta:jar:2.1.0:compile
[INFO] |     +- io.smallrye.reactive:smallrye-reactive-converter-api:jar:3.0.1:compile
[INFO] |     |  \- org.reactivestreams:reactive-streams:jar:1.0.4:compile
[INFO] |     +- io.smallrye.reactive:smallrye-reactive-converter-mutiny:jar:3.0.1:compile
[INFO] |     +- io.smallrye.reactive:mutiny-zero-flow-adapters:jar:1.1.0:compile
[INFO] |     +- org.jboss.narayana.jta:narayana-jta:jar:7.0.1.Final:compile
[INFO] |     |  +- jakarta.resource:jakarta.resource-api:jar:2.1.0:compile
[INFO] |     |  +- org.jboss.invocation:jboss-invocation:jar:2.0.0.Final:compile
[INFO] |     |  \- org.eclipse.microprofile.reactive-streams-operators:microprofile-reactive-streams-operators-api:jar:3.0:compile
[INFO] |     \- org.jboss.narayana.jts:narayana-jts-integration:jar:7.0.1.Final:compile
[INFO] +- io.quarkus:quarkus-scheduler:jar:3.11.0:compile
[INFO] |  +- io.quarkus:quarkus-scheduler-kotlin:jar:3.11.0:compile
[INFO] |  +- io.quarkus:quarkus-virtual-threads:jar:3.11.0:compile
[INFO] |  |  \- io.vertx:vertx-core:jar:4.5.7:compile
[INFO] |  |     +- io.netty:netty-common:jar:4.1.108.Final:compile
[INFO] |  |     +- io.netty:netty-buffer:jar:4.1.108.Final:compile
[INFO] |  |     +- io.netty:netty-transport:jar:4.1.108.Final:compile
[INFO] |  |     +- io.netty:netty-handler:jar:4.1.108.Final:compile
[INFO] |  |     |  \- io.netty:netty-transport-native-unix-common:jar:4.1.108.Final:compile
[INFO] |  |     +- io.netty:netty-handler-proxy:jar:4.1.108.Final:compile
[INFO] |  |     |  \- io.netty:netty-codec-socks:jar:4.1.108.Final:compile
[INFO] |  |     +- io.netty:netty-codec-http:jar:4.1.108.Final:compile
[INFO] |  |     +- io.netty:netty-codec-http2:jar:4.1.108.Final:compile
[INFO] |  |     +- io.netty:netty-resolver:jar:4.1.108.Final:compile
[INFO] |  |     \- io.netty:netty-resolver-dns:jar:4.1.108.Final:compile
[INFO] |  |        \- io.netty:netty-codec-dns:jar:4.1.108.Final:compile
[INFO] |  +- io.quarkus:quarkus-vertx:jar:3.11.0:compile
[INFO] |  |  +- io.quarkus:quarkus-netty:jar:3.11.0:compile
[INFO] |  |  |  +- io.netty:netty-codec:jar:4.1.108.Final:compile
[INFO] |  |  |  \- com.aayushatharva.brotli4j:brotli4j:jar:1.16.0:compile
[INFO] |  |  |     +- com.aayushatharva.brotli4j:service:jar:1.16.0:compile
[INFO] |  |  |     \- com.aayushatharva.brotli4j:native-linux-x86_64:jar:1.16.0:compile
[INFO] |  |  +- io.netty:netty-codec-haproxy:jar:4.1.108.Final:compile
[INFO] |  |  +- io.smallrye.common:smallrye-common-annotation:jar:2.3.0:compile
[INFO] |  |  +- io.quarkus:quarkus-vertx-latebound-mdc-provider:jar:3.11.0:compile
[INFO] |  |  +- io.smallrye.reactive:smallrye-mutiny-vertx-core:jar:3.12.0:compile
[INFO] |  |  |  +- io.smallrye.reactive:smallrye-mutiny-vertx-runtime:jar:3.12.0:compile
[INFO] |  |  |  \- io.smallrye.reactive:vertx-mutiny-generator:jar:3.12.0:compile
[INFO] |  |  |     \- io.vertx:vertx-codegen:jar:4.5.7:compile
[INFO] |  |  \- io.smallrye:smallrye-fault-tolerance-vertx:jar:6.3.0:compile
[INFO] |  +- org.jboss.slf4j:slf4j-jboss-logmanager:jar:2.0.0.Final:compile
[INFO] |  \- org.glassfish.expressly:expressly:jar:5.0.0:compile
[INFO] |     \- jakarta.el:jakarta.el-api:jar:5.0.1:compile
[INFO] +- io.quarkus:quarkus-spring-data-jpa:jar:3.11.0:compile
[INFO] |  +- io.quarkus:quarkus-hibernate-orm-panache:jar:3.11.0:compile
[INFO] |  |  +- io.quarkus:quarkus-hibernate-orm-panache-common:jar:3.11.0:compile
[INFO] |  |  |  \- io.quarkus:quarkus-panache-hibernate-common:jar:3.11.0:compile
[INFO] |  |  \- io.quarkus:quarkus-panache-common:jar:3.11.0:compile
[INFO] |  +- io.quarkus:quarkus-spring-di:jar:3.11.0:compile
[INFO] |  |  \- io.quarkus:quarkus-spring-beans-api:jar:5.2.SP7:compile
[INFO] |  +- io.quarkus:quarkus-spring-context-api:jar:5.2.SP7:compile
[INFO] |  \- io.quarkus:quarkus-spring-core-api:jar:5.2.SP7:compile
[INFO] +- com.blazebit:blaze-persistence-entity-view-impl-jakarta:jar:1.6.11:runtime
[INFO] |  +- com.blazebit:blaze-persistence-core-parser-jakarta:jar:1.6.11:runtime
[INFO] |  +- com.blazebit:blaze-common-utils:jar:0.1.21:compile
[INFO] |  \- org.javassist:javassist:jar:3.29.2-GA:compile
[INFO] +- com.blazebit:blaze-persistence-integration-quarkus-3:jar:1.6.11:compile
[INFO] |  \- com.blazebit:blaze-persistence-core-impl-jakarta:jar:1.6.11:runtime
[INFO] +- com.blazebit:blaze-persistence-integration-hibernate-6.2:jar:1.6.11:compile
[INFO] |  \- com.blazebit:blaze-persistence-integration-hibernate6-base:jar:1.6.11:compile
[INFO] |     \- com.blazebit:blaze-persistence-integration-jpa-base-jakarta:jar:1.6.11:compile
[INFO] +- org.eclipse.microprofile.rest.client:microprofile-rest-client-api:jar:3.0.1:compile
[INFO] +- org.apache.commons:commons-lang3:jar:3.14.0:compile
[INFO] +- org.passay:passay:jar:1.6.4:compile
[INFO] +- someproj:healthcore:test-jar:tests:1.0.0.91:test
[INFO] +- someproj:register-common:test-jar:tests:5.1.0.local-dev3:test
[INFO] +- org.projectlombok:lombok:jar:1.18.32:provided
[INFO] +- org.mapstruct:mapstruct:jar:1.5.5.Final:provided
[INFO] +- com.github.spotbugs:spotbugs-annotations:jar:4.8.5:provided
[INFO] |  \- com.google.code.findbugs:jsr305:jar:3.0.2:compile
[INFO] +- io.quarkus:quarkus-jacoco:jar:3.11.0:test
[INFO] |  +- org.jacoco:org.jacoco.core:jar:0.8.12:test
[INFO] |  |  +- org.ow2.asm:asm:jar:9.7:test
[INFO] |  |  \- org.ow2.asm:asm-tree:jar:9.7:test
[INFO] |  +- org.jacoco:org.jacoco.report:jar:0.8.12:test
[INFO] |  +- org.jacoco:org.jacoco.agent:jar:0.8.12:test
[INFO] |  +- org.jacoco:org.jacoco.agent:jar:runtime:0.8.12:test
[INFO] |  \- org.ow2.asm:asm-commons:jar:9.7:test
[INFO] +- io.quarkus:quarkus-junit4-mock:jar:3.11.0:test
[INFO] +- io.quarkus:quarkus-junit5:jar:3.11.0:test
[INFO] |  +- io.quarkus:quarkus-bootstrap-core:jar:3.11.0:test
[INFO] |  |  +- io.quarkus:quarkus-classloader-commons:jar:3.11.0:compile
[INFO] |  |  +- io.quarkus:quarkus-bootstrap-app-model:jar:3.11.0:test
[INFO] |  |  \- io.smallrye.common:smallrye-common-io:jar:2.3.0:compile
[INFO] |  +- org.eclipse.sisu:org.eclipse.sisu.inject:jar:0.9.0.M2:test
[INFO] |  +- io.quarkus:quarkus-test-common:jar:3.11.0:test
[INFO] |  |  +- io.quarkus:quarkus-core-deployment:jar:3.11.0:test
[INFO] |  |  |  +- org.aesh:readline:jar:2.4:test
[INFO] |  |  |  |  \- org.fusesource.jansi:jansi:jar:2.4.0:test
[INFO] |  |  |  +- org.aesh:aesh:jar:2.7:test
[INFO] |  |  |  +- io.quarkus.gizmo:gizmo:jar:1.8.0:test
[INFO] |  |  |  |  \- org.ow2.asm:asm-util:jar:9.7:test
[INFO] |  |  |  |     \- org.ow2.asm:asm-analysis:jar:9.7:test
[INFO] |  |  |  +- io.quarkus:quarkus-hibernate-validator-spi:jar:3.11.0:test
[INFO] |  |  |  +- io.quarkus:quarkus-class-change-agent:jar:3.11.0:test
[INFO] |  |  |  +- io.quarkus:quarkus-devtools-utilities:jar:3.11.0:test
[INFO] |  |  |  +- io.quarkus:quarkus-builder:jar:3.11.0:test
[INFO] |  |  |  +- org.graalvm.sdk:nativeimage:jar:23.1.2:test
[INFO] |  |  |  |  \- org.graalvm.sdk:word:jar:23.1.2:test
[INFO] |  |  |  \- org.junit.platform:junit-platform-launcher:jar:1.10.2:test
[INFO] |  |  +- io.quarkus:quarkus-bootstrap-maven-resolver:jar:3.11.0:test
[INFO] |  |  |  +- io.smallrye.beanbag:smallrye-beanbag-maven:jar:1.4.1:test
[INFO] |  |  |  |  +- io.smallrye.beanbag:smallrye-beanbag-sisu:jar:1.4.1:test
[INFO] |  |  |  |  |  \- io.smallrye.beanbag:smallrye-beanbag:jar:1.4.1:test
[INFO] |  |  |  |  +- javax.inject:javax.inject:jar:1:test
[INFO] |  |  |  |  +- org.apache.httpcomponents:httpclient:jar:4.5.14:test
[INFO] |  |  |  |  +- org.apache.maven:maven-artifact:jar:3.9.6:test
[INFO] |  |  |  |  +- org.apache.maven:maven-builder-support:jar:3.9.6:test
[INFO] |  |  |  |  +- org.apache.maven:maven-model:jar:3.9.6:test
[INFO] |  |  |  |  +- org.apache.maven:maven-model-builder:jar:3.9.6:test
[INFO] |  |  |  |  +- org.apache.maven:maven-repository-metadata:jar:3.9.6:test
[INFO] |  |  |  |  +- org.apache.maven:maven-settings:jar:3.9.6:test
[INFO] |  |  |  |  +- org.apache.maven.resolver:maven-resolver-api:jar:1.9.18:test
[INFO] |  |  |  |  +- org.apache.maven.resolver:maven-resolver-impl:jar:1.9.18:test
[INFO] |  |  |  |  |  \- org.apache.maven.resolver:maven-resolver-named-locks:jar:1.9.18:test
[INFO] |  |  |  |  +- org.apache.maven.resolver:maven-resolver-spi:jar:1.9.18:test
[INFO] |  |  |  |  +- org.apache.maven.resolver:maven-resolver-util:jar:1.9.18:test
[INFO] |  |  |  |  +- org.apache.maven.resolver:maven-resolver-transport-http:jar:1.9.18:test
[INFO] |  |  |  |  +- org.apache.maven.wagon:wagon-provider-api:jar:3.5.3:test
[INFO] |  |  |  |  +- org.apache.maven.wagon:wagon-http-shared:jar:3.5.3:test
[INFO] |  |  |  |  +- org.codehaus.plexus:plexus-interpolation:jar:1.26:test
[INFO] |  |  |  |  +- org.codehaus.plexus:plexus-utils:jar:3.5.1:test
[INFO] |  |  |  |  +- org.codehaus.plexus:plexus-xml:jar:4.0.0:test
[INFO] |  |  |  |  |  \- org.apache.maven:maven-xml-impl:jar:4.0.0-alpha-5:test
[INFO] |  |  |  |  |     \- org.apache.maven:maven-api-xml:jar:4.0.0-alpha-5:test
[INFO] |  |  |  |  |        \- org.apache.maven:maven-api-meta:jar:4.0.0-alpha-5:test
[INFO] |  |  |  |  +- org.codehaus.plexus:plexus-cipher:jar:2.0:test
[INFO] |  |  |  |  \- org.codehaus.plexus:plexus-sec-dispatcher:jar:2.0:test
[INFO] |  |  |  +- org.apache.maven:maven-embedder:jar:3.9.6:test
[INFO] |  |  |  |  +- org.apache.maven:maven-core:jar:3.9.6:test
[INFO] |  |  |  |  |  \- org.codehaus.plexus:plexus-component-annotations:jar:2.1.0:test
[INFO] |  |  |  |  +- org.apache.maven:maven-plugin-api:jar:3.9.6:test
[INFO] |  |  |  |  +- org.apache.maven.shared:maven-shared-utils:jar:3.3.4:test
[INFO] |  |  |  |  +- com.google.inject:guice:jar:5.1.0:test
[INFO] |  |  |  |  |  \- aopalliance:aopalliance:jar:1.0:test
[INFO] |  |  |  |  +- com.google.guava:failureaccess:jar:1.0.1:compile
[INFO] |  |  |  |  +- javax.annotation:javax.annotation-api:jar:1.3.2:test
[INFO] |  |  |  |  +- org.codehaus.plexus:plexus-classworlds:jar:2.6.0:test
[INFO] |  |  |  |  \- commons-cli:commons-cli:jar:1.5.0:test
[INFO] |  |  |  +- org.eclipse.sisu:org.eclipse.sisu.plexus:jar:0.9.0.M2:test
[INFO] |  |  |  +- org.apache.maven:maven-settings-builder:jar:3.9.6:test
[INFO] |  |  |  +- org.apache.maven:maven-resolver-provider:jar:3.9.6:test
[INFO] |  |  |  +- org.apache.maven.resolver:maven-resolver-connector-basic:jar:1.9.18:test
[INFO] |  |  |  +- org.apache.maven.resolver:maven-resolver-transport-wagon:jar:1.9.18:test
[INFO] |  |  |  +- org.apache.maven.wagon:wagon-http:jar:3.5.3:test
[INFO] |  |  |  \- org.apache.maven.wagon:wagon-file:jar:3.5.3:test
[INFO] |  |  +- io.quarkus:quarkus-bootstrap-gradle-resolver:jar:3.11.0:test
[INFO] |  |  +- io.smallrye:jandex:jar:3.1.8:test
[INFO] |  |  \- org.jboss.logging:commons-logging-jboss-logging:jar:1.0.0.Final:test
[INFO] |  +- io.quarkus:quarkus-junit5-properties:jar:3.11.0:test
[INFO] |  +- org.junit.jupiter:junit-jupiter:jar:5.10.2:test
[INFO] |  |  +- org.junit.jupiter:junit-jupiter-params:jar:5.10.2:test
[INFO] |  |  \- org.junit.jupiter:junit-jupiter-engine:jar:5.10.2:test
[INFO] |  |     \- org.junit.platform:junit-platform-engine:jar:1.10.2:test
[INFO] |  \- com.thoughtworks.xstream:xstream:jar:1.4.20:test
[INFO] |     \- io.github.x-stream:mxparser:jar:1.2.2:test
[INFO] |        \- xmlpull:xmlpull:jar:1.1.3.1:test
[INFO] +- io.quarkus:quarkus-junit5-mockito:jar:3.11.0:test
[INFO] |  +- io.quarkus:quarkus-junit5-mockito-config:jar:3.11.0:test
[INFO] |  +- io.quarkus:quarkus-arc-deployment:jar:3.11.0:test
[INFO] |  |  +- io.quarkus:quarkus-smallrye-context-propagation-spi:jar:3.11.0:test
[INFO] |  |  +- io.quarkus:quarkus-vertx-http-dev-ui-spi:jar:3.11.0:test
[INFO] |  |  +- io.quarkus.arc:arc-processor:jar:3.11.0:test
[INFO] |  |  \- io.quarkus:quarkus-arc-test-supplement:jar:3.11.0:test
[INFO] |  +- org.mockito:mockito-subclass:jar:5.11.0:test
[INFO] |  \- io.quarkus:quarkus-mutiny:jar:3.11.0:compile
[INFO] |     +- io.quarkus:quarkus-smallrye-context-propagation:jar:3.11.0:compile
[INFO] |     |  \- io.smallrye:smallrye-context-propagation:jar:2.1.0:compile
[INFO] |     |     +- io.smallrye:smallrye-context-propagation-api:jar:2.1.0:compile
[INFO] |     |     \- io.smallrye:smallrye-context-propagation-storage:jar:2.1.0:compile
[INFO] |     \- io.smallrye.reactive:mutiny-smallrye-context-propagation:jar:2.6.0:compile
[INFO] +- org.assertj:assertj-core:jar:3.25.3:test
[INFO] |  \- net.bytebuddy:byte-buddy:jar:1.14.15:compile
[INFO] +- org.awaitility:awaitility:jar:4.2.1:test
[INFO] |  \- org.hamcrest:hamcrest:jar:2.2:test
[INFO] +- com.tngtech.archunit:archunit-junit5:jar:1.3.0:test
[INFO] |  +- com.tngtech.archunit:archunit-junit5-api:jar:1.3.0:test
[INFO] |  |  \- com.tngtech.archunit:archunit:jar:1.3.0:test
[INFO] |  \- com.tngtech.archunit:archunit-junit5-engine:jar:1.3.0:test
[INFO] |     \- com.tngtech.archunit:archunit-junit5-engine-api:jar:1.3.0:test
[INFO] +- org.testcontainers:junit-jupiter:jar:1.19.8:test
[INFO] |  \- org.testcontainers:testcontainers:jar:1.19.8:test
[INFO] |     +- org.apache.commons:commons-compress:jar:1.26.1:test
[INFO] |     |  \- commons-codec:commons-codec:jar:1.17.0:test
[INFO] |     +- org.rnorth.duct-tape:duct-tape:jar:1.0.8:test
[INFO] |     |  \- org.jetbrains:annotations:jar:24.1.0:test
[INFO] |     +- com.github.docker-java:docker-java-api:jar:3.3.6:test
[INFO] |     \- com.github.docker-java:docker-java-transport-zerodep:jar:3.3.6:test
[INFO] |        +- com.github.docker-java:docker-java-transport:jar:3.3.6:test
[INFO] |        \- net.java.dev.jna:jna:jar:5.8.0:compile
[INFO] +- org.testcontainers:mariadb:jar:1.19.8:test
[INFO] |  \- org.testcontainers:jdbc:jar:1.19.8:test
[INFO] |     \- org.testcontainers:database-commons:jar:1.19.8:test
[INFO] +- org.apache.commons:commons-rng-simple:jar:1.5:test
[INFO] |  +- org.apache.commons:commons-rng-client-api:jar:1.5:test
[INFO] |  \- org.apache.commons:commons-rng-core:jar:1.5:test
[INFO] +- net.datafaker:datafaker:jar:2.2.2:test
[INFO] |  \- com.github.curious-odd-man:rgxgen:jar:2.0:test
[INFO] +- com.github.javaparser:javaparser-core:jar:3.25.10:test
[INFO] \- org.mockito:mockito-junit-jupiter:jar:5.11.0:test
[INFO]    +- org.mockito:mockito-core:jar:5.11.0:test
[INFO]    |  +- net.bytebuddy:byte-buddy-agent:jar:1.14.12:test
[INFO]    |  \- org.objenesis:objenesis:jar:3.3:test
[INFO]    \- org.junit.jupiter:junit-jupiter-api:jar:5.10.2:test
[INFO]       +- org.opentest4j:opentest4j:jar:1.3.0:test
[INFO]       +- org.junit.platform:junit-platform-commons:jar:1.10.2:test
[INFO]       \- org.apiguardian:apiguardian-api:jar:1.1.2:test
quarkus-bot[bot] commented 5 months ago

/cc @DavideD (hibernate-reactive), @FroMage (panache), @gavinking (hibernate-reactive), @geoand (kotlin), @loicmathieu (panache)

famod commented 5 months ago

/cc also @yrodiere

famod commented 5 months ago

Btw, unsurprisingly git bisect identified this commit: https://github.com/quarkusio/quarkus/pull/40102/commits/78952bcd4193042c2f569c3cf3b13d95be618b9a

yrodiere commented 5 months ago

@FroMage I think we'll need you to figure this out, as this seems caused by your patches to jpamodelgen...

yrodiere commented 5 months ago

@FroMage I think we'll need you to figure this out, as this seems caused by your patches to jpamodelgen...

Also I'm discovering just now these patches, and find them highly questionable... why do we have references to Panache in Hibernate ORM itself? Why isn't there rather some extension mechanism (ServiceLoader or other) that Panache implements?

FroMage commented 5 months ago

It's not a dependency from ORM to panache, but a way for it to detect that it's running in Quarkus with Panache. Apparently Quarkus Spring Data uses ORM/Panache, so that's where it's detected.

This should have no effect on metamodel generation, though. It should run, and just not assume you have either one of those (ORM or HR).

The only thing this detection changes is how your metamodel type-safe queries turn into static methods or bean methods. It's a bug if it stops running, I suppose.

FroMage commented 5 months ago

So, my patch is definitely not meant to turn off metamodel generation. But also I've no idea why it can find a io.quarkus.hibernate.reactive.panache package from that classpath you showed.

gsmet commented 5 months ago

In any case, I think we need two things:

FroMage commented 5 months ago

Also, I'm pretty sure we have tests in our CI that make sure the jpametamodel is generated for Panache, no?

FroMage commented 5 months ago

a quick fix/workaround (I wonder if the call you make to get the package always returns something even if the package is not around?).

No, this is tested in jpamodelgen tests

Another option would be that somehow you have the package in the build (deployment) classpath

That'd be weird, no?

as Yoann said, a proper way to push this information to JPA Modelgen. Relying on packages is brittle. If we have to change the packages at some point, we will need an ORM release. It can come in a second time but I don't think we will want to keep a Quarkus specific path in Hibernate ORM. It needs to be made more generic

This is how jpamodelgen works. It does the same to detect @Inject and transactions, and Jakarta Data. I don't think it's brittle, we will never change these packages, they're part of our API.

yrodiere commented 5 months ago

as Yoann said, a proper way to push this information to JPA Modelgen. Relying on packages is brittle. If we have to change the packages at some point, we will need an ORM release. It can come in a second time but I don't think we will want to keep a Quarkus specific path in Hibernate ORM. It needs to be made more generic

This is how jpamodelgen works. It does the same to detect @Inject and transactions, and Jakarta Data. I don't think it's brittle, we will never change these packages, they're part of our API.

  1. CDI and Jakarta Data being standards that we integrate with in Hibernate ORM, they're another story entirely.
  2. I wouldn't say API never change.
  3. Even if they don't, you can always add new APIs in Panache.
  4. Hardcoding these things solves the problem for Panache, but not for anything else. It's dodgy at best, hostile to the rest of the ecosystem at worst.

EDIT: created https://hibernate.atlassian.net/browse/HHH-18159

gsmet commented 5 months ago

@famod

Could you get the full dependency tree with ./mvnw quarkus:dependency-tree and see if there's anything suspicious?

Also, it will sound like a stupid question, but could you make sure you don't have the package in your app?

FroMage commented 5 months ago

Also, can we have a reproducer? Because detection of Panache in the processor should have zero effect on generation of the metamodel. Do you know if it's generated when compiled by Maven? If you run with -X, perhaps you see an exception during annotation processing?

famod commented 5 months ago

@FroMage

So, my patch is definitely not meant to turn off metamodel generation.

Thanks for confirming, I had a feeling that this warning might not hint at all at the actual root cause of entirely missing code generation.

Maybe it's related to the eclipse compiler (ECJ) which we are using via maven-compiler-plugin.

Will try to get more annotation processor output.

FroMage commented 5 months ago

I've had issues where jpamodelgen processor errors where just hidden from me, very frustratingly.

famod commented 5 months ago

Maybe it's related to the eclipse compiler (ECJ) which we are using via maven-compiler-plugin.

Confirmed, switching to the default compiler fixes both the warning and the actual metamodel generation. Meaning something has changed in jpamodelgen in 6.5 that breaks it for ECJ.

This also means that a much smaller proportion of users is affected because (I think) the vast majority is using the default compiler.

Btw, I'm not fond of moving to the default compiler permanently because it's ~50% slower in my case.

FroMage commented 5 months ago

If you manage to get the processor to log things, you should see those logs:

            context.logMessage( Diagnostic.Kind.OTHER, "Starting new round" );
            try {
                processClasses( roundEnvironment );
                createMetaModelClasses();
            }
            catch (Exception e) {
                final StringWriter stack = new StringWriter();
                e.printStackTrace( new PrintWriter(stack) );
                final Throwable cause = e.getCause();
                final String message =
                        cause != null && cause != e
                                ? e.getMessage() + " caused by " + cause.getMessage()
                                : e.getMessage();
                context.logMessage( Diagnostic.Kind.ERROR, "Error running Hibernate processor: " + message );
                context.logMessage( Diagnostic.Kind.ERROR, stack.toString() );
            }
famod commented 5 months ago

Ah, I obviously missed the fact that the metamodel classes are generated, but -X reveals e.g.:

1. ERROR in /home/famod/work/someproj/register/dev3/core/target/generated-sources/annotations/someproj/register/core/persistence/entity/_ApplicationLock.java (at line 4)
    import jakarta.data.metamodel.SortableAttribute;
           ^^^^^^^^^^^^
The import jakarta.data cannot be resolved

Also affected: jakarta.data.metamodel.StaticMetamodel (which should be jakarta.persistence.metamodel.StaticMetamodel instead)

So it seems that somehow with ECJ that experimental Jakarta Data support is active? https://github.com/hibernate/hibernate-orm/blob/6.5/migration-guide.adoc#jakarta-data

FroMage commented 5 months ago

Yeah, ok, so what's most likely is that ECG will pretend that every package exists, so the entire jpamodelgen strategy for detecting things is broken in ECG. This is used for many other dependencies.

FroMage commented 5 months ago

So, all those will be broken, I suppose:

        final PackageElement jakartaInjectPackage =
                context.getProcessingEnvironment().getElementUtils()
                        .getPackageElement( "jakarta.inject" );
        final PackageElement jakartaAnnotationPackage =
                context.getProcessingEnvironment().getElementUtils()
                        .getPackageElement( "jakarta.annotation" );
        final PackageElement jakartaContextPackage =
                context.getProcessingEnvironment().getElementUtils()
                        .getPackageElement( "jakarta.enterprise.context" );
        final PackageElement jakartaTransactionsPackage =
                context.getProcessingEnvironment().getElementUtils()
                        .getPackageElement( "jakarta.transactions" );
        final PackageElement jakartaDataPackage =
                context.getProcessingEnvironment().getElementUtils()
                        .getPackageElement( "jakarta.data" );
        final PackageElement quarkusOrmPackage =
                context.getProcessingEnvironment().getElementUtils()
                        .getPackageElement( "io.quarkus.hibernate.orm" );

        PackageElement quarkusOrmPanachePackage =
                context.getProcessingEnvironment().getElementUtils()
                        .getPackageElement( "io.quarkus.hibernate.orm.panache" );
        PackageElement quarkusReactivePanachePackage =
                context.getProcessingEnvironment().getElementUtils()
                        .getPackageElement( "io.quarkus.hibernate.reactive.panache" );
famod commented 5 months ago

I can confirm via debugging that all those PackageElements are non-null with ECJ. Bummer!

yrodiere commented 5 months ago

Thanks for the feedback @famod .

I created https://hibernate.atlassian.net/browse/HHH-18160 to address the problem upstream. That probably won't get solved in time for the Quarkus 3.11 platform release, though.

One workaround is to override the version of Jpamodelgen to 6.4.8.Final. It's not guaranteed to work, but there's a decent chance it does.

famod commented 5 months ago

Thanks @yrodiere for backporting the fix already to Hibernate 6.5!

cvgaviao commented 5 months ago

After that fix I started to have one class and one interface being generated in my projects on Eclipse. :(

and the _BaseEntity one is with an error due a missing jakarta.data.metamodel package on the classpath

import jakarta.annotation.Generated;
import jakarta.persistence.metamodel.MappedSuperclassType;
import jakarta.persistence.metamodel.SingularAttribute;
import jakarta.persistence.metamodel.StaticMetamodel;
import java.time.ZonedDateTime;

@StaticMetamodel(BaseEntity.class)
@Generated("org.hibernate.processor.HibernateProcessor")
public abstract class BaseEntity_ {
import jakarta.annotation.Generated;
import jakarta.data.metamodel.SortableAttribute;
import jakarta.data.metamodel.StaticMetamodel;
import jakarta.data.metamodel.TextAttribute;
import jakarta.data.metamodel.impl.SortableAttributeRecord;
import jakarta.data.metamodel.impl.TextAttributeRecord;

@StaticMetamodel(BaseEntity.class)
@Generated("org.hibernate.processor.HibernateProcessor")
public interface _BaseEntity {
yrodiere commented 5 months ago

Can I ask which fix are you talking about... ? https://hibernate.atlassian.net/browse/HHH-18019 is fixed in Hibernate ORM 6.5.3, which hasn't even been released yet.

If you need HHH-18019 to fix your Eclipse workspace, it's on its way.

If you have other problems with static model generation, I suggest you create an issue on the Hibernate Jira with a reproducer. Quarkus has little to do with that annotation processor, especially in your IDE.