spring boot 2.3 jpa querydsl 調整 dsl 的包路徑

添加插件 生成 Q…實體

<!--添加QueryDSL插件支持-->
            <plugin>
                <groupId>com.mysema.maven</groupId>
                <artifactId>apt-maven-plugin</artifactId>
                <version>1.1.3</version>
                <dependencies>
                    <dependency>
                        <groupId>com.querydsl</groupId>
                        <artifactId>querydsl-apt</artifactId>
                        <version>${querydsl.version}</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <goals>
                            <goal>process</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>target/generated-sources/java</outputDirectory>
                            <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
                            <options>
                            	<!--修改包前綴 -->
                                <querydsl.packageSuffix>.dsl</querydsl.packageSuffix>
                            </options>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

在插件中我們配置了 querydsl.packageSuffix 所以 生成的包路徑如下
在這裏插入圖片描述

此時重啓項目 會報錯 提示找不到 cn.zhangfusheng.user.model.QTbUser ,這是因爲我們配置了 dsl 的包前綴

解決辦法

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.querydsl.EntityPathResolver;
import org.springframework.data.querydsl.SimpleEntityPathResolver;

/**
 * query dsl 配置
 */
@Configuration
public class DataSourceQueryDslConfig {

    /**
     * 配置 query dsl 的前綴
     * @return
     */
    @Bean
    public EntityPathResolver entityPathResolver() {
        return new ProjectEntityPathResolver(".dsl");
    }

    public static class ProjectEntityPathResolver extends SimpleEntityPathResolver implements EntityPathResolver {

        /**
         * Creates a new {@link SimpleEntityPathResolver} with the given query package suffix.
         * @param querySuffix must not be {@literal null}.
         */
        public ProjectEntityPathResolver(String querySuffix) {
            super(querySuffix);
        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章