【发布时间】:2016-10-16 03:29:50
【问题描述】:
您好,我对结合 QueryDSL JPA 和 SQL 时的代码生成有疑问。根据QueryDQL创建者的一个SO问题的回答,这两个模块的组合是CRUD操作(JPA)和查询(SQL)的流行用法。
只使用JPA模块成功后,我尝试添加SQL模块,但不知道是否应该将SQL的代码生成添加到pom中。
事实上,我正在寻找 insert 函数,但在 JPA 模块中找不到它,这就是我尝试使用 SQL 的原因。
另外,当我尝试从 QueryDslPredicateExecutor 扩展 Spring Repository 时,出现错误:
com.mysema.query.types.Predicate 类型无法解析。它是从所需的 .class 文件中间接引用的。
有人说这是 Eclipse 配置问题,但我无法解决问题。
QueryDSL 版本是 4.1.2,Spring Boot 是 1.3.5。那么什么是正确的版本呢?
pom.xml
....
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>${querydsl.version}</version>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>${querydsl.version}</version>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-sql-spring</artifactId>
<version>${querydsl.version}</version>
</dependency>
....
<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/java</outputDirectory>
<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>${querydsl.version}</version>
</dependency>
</dependencies>
</plugin>
【问题讨论】:
-
Spring Boot 1.3.5,有一个用于 querydsl 3 而不是 4 的 spring-data-jpa 版本。另外,如果您已经使用 JPA,为什么还需要生成插入?基本上完全超越了 JPA 的目的。
-
目前只是为了学习QueryDSL,我发现SQL模块只有insert函数。
-
这有什么更新吗? querydsl-core jar 显然包含 Predicate 类,我不明白为什么 eclipse 抱怨
标签: spring spring-boot querydsl