如何在外部实体上生成查询dsl Q类



我使用公共库中的@Entity类:

@Entity
public class Person {
@Id
private long id;
private String firstname;

@NotNull
private String lastname;
}

在我的impl应用程序中,我想要生成一个QPersonquerydsl实体。但是怎么做呢?因为我无法控制commons库,所以我不能简单地为querydsl处理器添加@QueryEntity注释。

我找到了一个解决方案。但是我不知道这是不是正确的方式,所以我仍然很高兴你的评论。

在实现项目中的某个位置创建一个package-info,如下所示:

@QueryEntities(value = {Person.class})
package my.impl.project

奇怪的是:现在commons项目中的所有实体类都生成了。因此我限制了maven中的路径:

<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>${apt-maven-plugin.version}</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/generated-sources</outputDirectory>
<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
<options>        
<querydsl.includedPackages>org.common.domain.person</querydsl.includedPackages>
</options>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>${querydsl.version}</version>
</dependency>
</dependencies>
</plugin>

在我们的项目中,我们不喜欢生成一些源代码。因此,我们禁用了代码生成,并手动为Querydsl编写Q文件。我们查看了生成的文件,并以与生成文件相同的方式编写它们。请记住,您的Q文件必须与编写的实体文件在同一个包中

最新更新