Open napsterv opened 1 year ago
springboot3.0+ uses jakarta
Running into same issue and also using jakarta classifier.
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-core</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>5.0.0</version>
<classifier>jakarta</classifier>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>5.0.0</version>
<classifier>jakarta</classifier>
</dependency>
I mean that SpringBoot 3.0+ seems to have abandoned JavaX
I was able to fix by only using the following two dependencies (removing the direct query-dsl-core dependency)
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>5.0.0</version>
<classifier>jakarta</classifier>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>5.0.0</version>
<classifier>jakarta</classifier>
</dependency>
hello, i have the same issue, i dont have query-dsl-core in my dependencies, i was not able to automatically generate Qclasses. I had to do it like:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
<path>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<classifier>jakarta</classifier>
<version>${querydsl.version}</version>
</path>
<path>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
<version>${jakarta-persistence.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
to by able to generate them. BUT, i came accross the same problem with [NoClassDefFoundError] when i look into QuerydslPredicateExecutor for findAll(Predicate predicate) it seems it still wants to use javax and not jakarta.
@EntityGraph(value = "Advertisement.simple", type = EntityGraph.EntityGraphType.LOAD)
List<Advertisement> findAll(Predicate predicate);
Any idea how to fix this problem?
to by able to generate them. BUT, i came accross the same problem with [NoClassDefFoundError] when i look into QuerydslPredicateExecutor for findAll(Predicate predicate) it seems it still wants to use javax and not jakarta.
@EntityGraph(value = "Advertisement.simple", type = EntityGraph.EntityGraphType.LOAD) List<Advertisement> findAll(Predicate predicate);
Any idea how to fix this problem?
I think the problem is that a few javax.persistence
exceptions are still hardcoded in QueryDSL/JPA (for example here) ... so we worked around the issue by adding the old api in pom.xml
:
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
<version>2.2</version>
</dependency>
Observed vs. expected behavior
When JpaRepository is extended with
QuerydslPredicateExecutor
andQuerydslBinderCustomizer
and API is consumed it results injava.lang.ClassNotFoundException: javax.persistence.NoResultException
Steps to reproduce
Ex:
Environment
SpringBoot: 3.0.2
Querydsl version: 5.0.0
Querydsl module:
Database: PostgreSQL
JDK: 17
Additional details
StackTrace:
If I run the same piece of code in SpringBoot 2.5.3, the code works fine as expected and data is getting filtered.