我目前正在使用 maven apt 插件生成 EntityPath 基类。
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>maven-apt-plugin</artifactId>
<version>1.0.4</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>
<processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>${querydsl.version}</version>
</dependency>
<dependency>
<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<classifier>apt</classifier>
<version>${querydsl.version}</version>
</dependency>
</dependencies>
</plugin>
这会生成所需的 Q 类,并且有助于为查询构建谓词。但是我注意到,每当我超过四个级别时,我总是会得到一个空指针异常,即:
QFoo.foo.x.y.z
其中 Z 是 QZ 类型;生成的 EntityPath。
这是 QueryDSL 的限制吗?
最佳答案
是的,这是 Querydsl 的限制。由于正常路径初始化使用最终字段,因此需要使用限制。幸运的是,可以通过多种方式自定义路径初始化 http://www.querydsl.com/static/querydsl/3.5.0/reference/html/ch03s03.html#d0e2181
关于java - 为什么查询dsl实体路径限制在四级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26381064/