I'm migrating a Spring boot app from Spring 2.7 to 3.0.4, I'm having an issue with something of querysDSL. I already trying to solve it changing a dependency but it doesn't work, I would be thankful if someone could help me to see the mistake.
This is the following error:
warning: unknown enum constant GenerationType.IDENTITY
reason: class file for javax.persistence.GenerationType not found
warning: unknown enum constant GenerationType.IDENTITY
warning: unknown enum constant FetchType.LAZY
reason: class file for javax.persistence.FetchType not found
warning: unknown enum constant CascadeType.ALL
reason: class file for javax.persistence.CascadeType not found
warning: unknown enum constant GenerationType.IDENTITY
warning: unknown enum constant FetchType.LAZY
warning: unknown enum constant CascadeType.ALL
warning: unknown enum constant GenerationType.IDENTITY
warning: unknown enum constant GenerationType.IDENTITY
error: cannot access MappedSuperclass
class file for javax.persistence.MappedSuperclass not found
/Users/paolabeltran/Documents/GitHub/ar-dispute-es-updater/src/main/java/com/ibm/ar/dispute/es/updater/config/QueryDslConfig.java:45: error: cannot access EntityManager
unknown enum constant GenerationType.IDENTITY
return new JPAQueryFactory(em);
^
class file for javax.persistence.EntityManager not found
/Users/paolabeltran/Documents/GitHub/ar-dispute-es-updater/src/main/java/com/ibm/ar/dispute/es/updater/utils/UserUtils.java:13: error: cannot find symbol
content.setNameFull(Constants.DEFAULT_USER_NAME);
unknown enum constant FetchType.LAZY
^
unknown enum constant CascadeType.ALL
symbol: method setNameFull(String)
location: variable content of type BluepagesResponse.BluepagesContent
unknown enum constant GenerationType.IDENTITY
unknown enum constant FetchType.LAZY
unknown enum constant CascadeType.ALL
unknown enum constant GenerationType.IDENTITY
/Users/paolabeltran/Documents/GitHub/ar-dispute-es-updater/src/main/java/com/ibm/ar/dispute/es/updater/utils/UserUtils.java:14: error: cannot find symbol
cannot access MappedSuperclass
And this is my querysDSL config:
package com.ibm.ar.dispute.es.updater.config;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.Profile;
import com.querydsl.jpa.impl.JPAQueryFactory;
import com.querydsl.sql.DB2Templates;
import com.querydsl.sql.SQLQueryFactory;
import com.querydsl.sql.SQLTemplates;
import com.querydsl.sql.spring.SpringConnectionProvider;
import com.querydsl.sql.spring.SpringExceptionTranslator;
import com.querydsl.sql.types.DateTimeType;
import com.querydsl.sql.types.LocalDateType;
@Configuration
@Import(DatabaseConfig.class)
@Profile("default")
public class QueryDslConfig {
@PersistenceContext
private EntityManager em;
@Bean
public com.querydsl.sql.Configuration querydslConfiguration() {
SQLTemplates templates = DB2Templates.builder().printSchema().build();
com.querydsl.sql.Configuration configuration = new com.querydsl.sql.Configuration(templates);
configuration.register(new DateTimeType());
configuration.register(new LocalDateType());
configuration.setExceptionTranslator(new SpringExceptionTranslator());
// useLiterals to get SQL with bindings value in querydsl
// Refer https://stackoverflow.com/a/21710120/9490334
return configuration;
}
@Bean
public SQLQueryFactory queryFactory(DatabaseConfig dbConfig) {
return new SQLQueryFactory(querydslConfiguration(), new SpringConnectionProvider(dbConfig.dataSource()));
}
@Bean
JPAQueryFactory jpaQueryFactory() {
return new JPAQueryFactory(em);
}
}
Directly in the IDE i'm recieving an Cannot resolve the constructor
error in the return new JPAQueryFactory(em);
This are my dependencies at build.gradle:
def lombokVersion = '1.18.+'
def querydslVersion = '5.0.+'
dependencies {
// Spring dependencies
implementation('org.springframework.boot:spring-boot-starter-web')
implementation('org.springframework.boot:spring-boot-starter-validation')
implementation('org.springframework.boot:spring-boot-starter-security')
implementation('org.springframework.boot:spring-boot-starter-data-jpa')
implementation('org.springframework.boot:spring-boot-starter-actuator')
implementation('org.springframework.boot:spring-boot-starter-data-redis')
annotationProcessor("org.springframework.boot:spring-boot-starter-data-jpa")
// Querydsl
implementation group: 'com.querydsl', name: 'querydsl-jpa', version: querydslVersion
implementation group: 'com.querydsl', name: 'querydsl-sql', version: querydslVersion
implementation group: 'com.querydsl', name: 'querydsl-sql-spring', version: querydslVersion
implementation group: 'com.querydsl', name: 'querydsl-apt', version: querydslVersion
implementation group: 'com.querydsl', name: 'querydsl-core', version: querydslVersion
annotationProcessor("com.querydsl:querydsl-apt:${querydslVersion}:jakarta")
annotationProcessor('javax.annotation:javax.annotation-api:1.3.2')
annotationProcessor('org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final')
annotationProcessor("jakarta.persistence:jakarta.persistence-api")
annotationProcessor("jakarta.annotation:jakarta.annotation-api")
}
I already change at first a dependency, from annotationProcessor("com.querydsl:querydsl-apt:${querydslVersion}:jpa")
to annotationProcessor ("com.querydsl:querydsl-apt:${querydslVersion}:jakarta")