У меня проблема с автогенерированием класса Q в com.querydsl. Я знаю, что возможны ошибки с совместимостью между com.query.dsl и spring-boot-jpa, но я пробовал много версий без какого-либо положительного результата. Вот мой pom.xmlQuerydslPredicate with spring-boot-starter-jpa
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4.1212.jre7</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.12</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>21.0</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>4.0.7</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.1.3</version>
<executions>
<execution>
<id>process-common-model</id>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/apt</outputDirectory>
<processors>
<processor>com.query.apt.jpa.JPAAnnotationProcessor</processor>
</processors>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>4.0.7</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Ошибка
Вызванный: org.springframework.beans.BeanInstantiationException: Не удалось создать экземпляр [org.springframework.data.jpa.repository.support.QueryDslJpaRepository] : Конструктор бросил исключение; Вложенное исключение - это java.lang.IllegalArgumentException: не нашел класс запроса com.coig.prek.webservice.modules.quiz.entiry.QQuiz для класса домена com.coig.prek.webservice.modules.quiz.entiry.Quiz! at org.springframework.beans.BeanUtils.instantiateClass (BeanUtils.java:154) ~ [spring-beans-4.3.6.RELEASE.jar: 4.3.6.RELEASE] на org.springframework.data.repository.core. support.RepositoryFactorySupport.getTargetRepositoryViaReflection (RepositoryFactorySupport.java:365) ~ [spring-data-commons-1.13.0.RELEASE.jar: na] at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository (JpaRepositoryFactory. java: 101) ~ [spring-data-jpa-1.11.0.RELEASE.jar: na] at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository (JpaRepositoryFactory.java:81) ~ [spring- data-jpa-1.11.0.RELEASE.jar: na] at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository (RepositoryFactorySupport.java:199) ~ [spring-data-commons-1.13.0. RELEASE.jar: na] в org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn (RepositoryFactoryBeanSupport.java:277) ~ [spring-data-commons-1.13.0.RELEASE.jar: na] по адресу org.springframework.data. repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet (RepositoryFactoryBeanSupport.java:263) ~ [spring-data-commons-1.13.0.RELEASE.jar: na] at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean. afterPropertiesSet (JpaRepositoryFactoryBean.java:101) ~ [spring-data-jpa-1.11.0.RELEASE.jar: na] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods (AbstractAutowireCapableBeanFactory.java:1687) ~ [ spring-beans-4.3.6.RELEASE.jar: 4.3.6.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.ja va: 1624) ~ [spring-beans-4.3.6.RELEASE.jar: 4.3.6.RELEASE] ... 47 общих фреймов опущено Вызвано: java.lang.IllegalArgumentException: не найдено класс запроса com. coig.prek.webservice.modules.quiz.entiry.QQuiz для домена класс com.coig.prek.webservice.modules.quiz.entiry.Quiz! at org.springframework.data.querydsl.SimpleEntityPathResolver.createPath (SimpleEntityPathResolver.java:63) ~ [spring-data-commons-1.13.0.RELEASE.jar: na] at org.springframework.data.jpa.repository. support.QueryDslJpaRepository. (QueryDslJpaRepository.java:84) ~ [spring-data-jpa-1.11.0.RELEASE.jar: na] at org.springframework.data.jpa.repository.support.QueryDslJpaRepository. (QueryDslJpaRepository.java: 68) ~ [spring-data-jpa-1.11.0.RELEASE.jar: na] at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод) ~ [na: 1.8.0_111] at sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62) ~ [na: 1.8.0_111] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) ~ [na: 1.8.0_111] at j ava.lang.reflect.Constructor.newInstance (Constructor.java:423) ~ [na: 1.8.0_111] at org.springframework.beans.BeanUtils.instantiateClass (BeanUtils.java:142) ~ [spring-beans-4.3. 6.RELEASE.jar: 4.3.6.RELEASE] ... 56 общих кадров опущено Вызвано: java.lang.ClassNotFoundException: com.coig.prek.webservice.modules.quiz.entiry.QQuiz на java.net .URLClassLoader.findClass (URLClassLoader.java:381) ~ [na: 1.8.0_111] в java.lang.ClassLoader.loadClass (ClassLoader.java:424) ~ [na: 1.8.0_111] at sun.misc.Launcher $ AppClassLoader. loadClass (Launcher.java:331) ~ [na: 1.8.0_111] at java.lang.ClassLoader.loadClass (ClassLoader.java:357) ~ [na: 1.8.0_111] at org.springframework.util.ClassUtils. forName (ClassUtils.java:250) ~ [spring-core-4.3.6.RELEASE.jar: 4.3.6.RELEASE] по адресу org.springframework.data.querydsl.SimpleEntityPathResolver.createPath (SimpleEntityPathResolver.java:53) ~ [ весна-данные-Обще-1.13.0.RELEASE.jar: на] ... 63 общие рамки опущены
Repository:
@Repository
public interface QuizRepository extends PagingAndSortingRepository<Quiz, Long>, QueryDslPredicateExecutor<Quiz> {
}
И Entity:
@javax.persistence.Entity
@Table(name = "QUIZ", uniqueConstraints = {
@UniqueConstraint(columnNames = "NAME")
})
@ToString
public class Quiz extends Entity{
@Column(name = "NAME")
private @Setter @Getter String name;
@Column(name = "TYPE")
private @Setter @Getter Integer type;
@Column(name = "TIME")
private @Setter @Getter Long time;
@JsonProperty(value = "branch")
@Column(name = "BRANCH")
private @Setter @Getter Integer branch;
@OneToMany
private @Setter @Getter Set<Question> questions;
public Quiz() {}
}
Можете ли вы сказать мне, если я что-то отсутствует, или то, что я делаю неправильно? Спасибо за любую помощь.
Для начала перестает смешивания пружинных загрузочные версий (1.5.1 и 1.4.3 и?). Никогда не смешивайте версии фреймворка (независимо от структуры). –
Да, моя ошибка, забыл исправить код после проверки другого решения, найденного в Google. (Это не фиксировало мою основную проблему) – rdabrowski