编程语言
首页 > 编程语言> > java – 查询未生成的DSL Q类类

java – 查询未生成的DSL Q类类

作者:互联网

我试图在我的eclipse maven项目中使用QueryDSL.这些是依赖项.

<properties>
        <!-- The main class to start by executing java -jar -->
        <start-class>my.app.market.DBApp</start-class>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <querydsl.version>4.1.4</querydsl.version>
        <apt-maven-plugin.version>1.1.3</apt-maven-plugin.version>

</properties>

<dependency>
            <groupId>com.querydsl</groupId>
            <artifactId>querydsl-apt</artifactId>
            <version>4.1.4</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.querydsl</groupId>
            <artifactId>querydsl-jpa</artifactId>
            <version>4.1.4</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.1</version>
        </dependency>

<build>
        <plugins>
            <plugin>
                <groupId>com.mysema.maven</groupId>
                <artifactId>apt-maven-plugin</artifactId>
                <version>1.1.3</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>process</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>target/generated-sources</outputDirectory>
                            <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

在此之后我尝试编写查询.

@Repository
public class QueryDSLRepo {

    @PersistenceContext
    private EntityManager em;

    public ReportingParamDAO save(final ReportingParamDAO reportingParamDAO) {
        em.persist(reportingParamDAO);
        return reportingParamDAO;
    }

    public List<ReportingParamDAO> findreportingParamDAOsByIdQueryDSL(final Integer id) {
        final JPAQuery<ReportingParamDAO> query = new JPAQuery<>(em);
        final QReportingParamDAO reportingParamDAO = QReportingParamDAO.reportingParamDAO;

        return query.from(reportingParamDAO).where(reportingParamDAO.id.eq(id)).fetch();
    }


}

但是我得到了错误

QReportingParamDAO cannot be resolved to a type

注意:ReportingParamDAO是一个实体类.

这意味着不会生成DAO的Q类类.我不确定为什么它没有生成.我还需要做点什么吗?我遇到了this帖子,但是用户正在使用IntelliJ,我似乎无法在我的情况下使其工作.有人可以帮帮我吗.谢谢 !!

解决方法:

我用你的pom.xml测试过. Q类是为我生成的,但我无法从源代码中访问它们.问题是默认情况下生成的源不在类路径上.在类路径中添加它,您就可以在源代码中使用它们.

>检查target / generated-sources目录以查看类是否确实存在. (您应该能够找到它们,因为我使用您的pom.xml进行了测试)
>如果将target / generated-sources添加到classpath,则应用程序将起作用.但我认为这不是一个好主意.因为类路径中的所有文件都将由IDE编制索引,并且IDE将变慢.无需索引generated-sources文件夹中的所有文件.所以将target / generated-sources / java添加到classpath并将query-dsl插件更改为生成的Q类到target / generated-sources / java

标签:querydsl,java,spring,eclipse
来源: https://codeday.me/bug/20190828/1750765.html