更改QueryDsl软件包位置不会启动Spring Boot应用程序

时间:2018-08-20 12:44:48

标签: java spring spring-boot spring-data-jpa querydsl

我正在使用Spring Boot应用程序,我也在使用mongodb。为了创建查询条件,我正在使用QueryDsl库。问题是,它会生成Q类。 我正在使用Jacoco插件来检查代码覆盖率。在jacoco插件中,我可以排除Q类,但我不希望该实现。另一种解决方案是配置QueryDsl,以使生成的类位于不同的程序包中。然后我们可以在jacoco中排除该软件包。

我已经实现了第二种解决方案,即更改Q类的软件包,即

           <plugin>
                <groupId>com.mysema.maven</groupId>
                <artifactId>apt-maven-plugin</artifactId>
                <version>1.1.3</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>process</goal>
                        </goals>
                        <configuration>
                            <options>
                                <querydsl.packageSuffix>.query</querydsl.packageSuffix>
                            </options>
                            <outputDirectory>target/generated-sources/java</outputDirectory>
                            <processor>org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor</processor>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

编译时,将在所需的程序包中生成Q类。但是,当我启动应用程序时,出现“找不到类异常” 应用程序期望在定义我的实体的同一包中使用Q类。日志如下,

Caused by: java.lang.ClassNotFoundException: abc.xyz.model.persistence.QFoo
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_151]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_151]
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) ~[na:1.8.0_151]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_151]
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:274) ~[spring-core-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    at org.springframework.data.querydsl.SimpleEntityPathResolver.createPath(SimpleEntityPathResolver.java:71) ~[spring-data-commons-2.1.0.M3.jar:2.1.0.M3]

注意:我使用的是Spring Boot 2.0.3,也使用的是spring-data-mongodb版本2.1.0.M3(支持mongo 4)。

这个问题已经被提出并且已经解决,但是我不知道为什么它是一个可以接受的答案。 How to register custom Querydsl EntityPathResolver with Spring Data MongoRepositoryFactory?

0 个答案:

没有答案