如何在外部实体上生成查询-dsl Q 类?
How to generate query-dsl Q classes on external entity?
我使用来自公共图书馆的 @Entity
class:
@Entity
public class Person {
@Id
private long id;
private String firstname;
@NotNull
private String lastname;
}
在我的 impl 应用程序中,我想生成一个 QPerson
querydsl 实体。但是怎么办?因为我无法控制公共库,所以我不能简单地为 querydsl 处理器添加 @QueryEntity
注释。
在我们的项目中,我们不喜欢生成一些源代码的事实。因此,我们禁用代码生成并手动为 Query dsl 编写 Q 文件。我们查看了生成的文件,并按照与生成它们相同的方式编写它们。请记住,您的 Q 文件必须与为其编写的实体文件位于同一包中
我找到了解决办法。但我不知道这是否是正确的方法,所以仍然很高兴收到您的意见。
在实施项目某处创建一个package-info
如下:
@QueryEntities(value = {Person.class})
package my.impl.project
奇怪的是:现在生成了公共项目中的所有实体 类。因此我在 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>
我使用来自公共图书馆的 @Entity
class:
@Entity
public class Person {
@Id
private long id;
private String firstname;
@NotNull
private String lastname;
}
在我的 impl 应用程序中,我想生成一个 QPerson
querydsl 实体。但是怎么办?因为我无法控制公共库,所以我不能简单地为 querydsl 处理器添加 @QueryEntity
注释。
在我们的项目中,我们不喜欢生成一些源代码的事实。因此,我们禁用代码生成并手动为 Query dsl 编写 Q 文件。我们查看了生成的文件,并按照与生成它们相同的方式编写它们。请记住,您的 Q 文件必须与为其编写的实体文件位于同一包中
我找到了解决办法。但我不知道这是否是正确的方法,所以仍然很高兴收到您的意见。
在实施项目某处创建一个package-info
如下:
@QueryEntities(value = {Person.class})
package my.impl.project
奇怪的是:现在生成了公共项目中的所有实体 类。因此我在 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>