我利用一个 @Entity 从commons库初始化:
@Entity
@Entitypublic class Person { @Id private long id; private String firstname; @NotNull private String lastname;}
public class Person {
@Id
private long id;
private String firstname;
@NotNull
private String lastname;
}
在impl应用程序中,我想生成一个 QPerson querydsl实体。但是怎么做呢?因为我无法控制公共图书馆,所以我不能简单地添加 @QueryEntity querydsl处理器的注解。
QPerson
@QueryEntity
sqyvllje1#
在我们的项目中,我们不喜欢生成一些源代码。因此,我们禁用了代码生成并手动编写查询dsl的q文件。我们查看生成的文件,只需按照生成文件的方式编写它们。但是请记住,q文件必须与为其编写的实体文件位于同一个包中
myzjeezk2#
我找到了解决办法。但我不知道这是不是正确的方式,所以我还是很高兴你的意见。创建 package-info 在实施项目的某处,如下所示:
package-info
@QueryEntities(value = {Person.class})package my.impl.project
@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>
<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>
2条答案
按热度按时间sqyvllje1#
在我们的项目中,我们不喜欢生成一些源代码。因此,我们禁用了代码生成并手动编写查询dsl的q文件。我们查看生成的文件,只需按照生成文件的方式编写它们。但是请记住,q文件必须与为其编写的实体文件位于同一个包中
myzjeezk2#
我找到了解决办法。但我不知道这是不是正确的方式,所以我还是很高兴你的意见。
创建
package-info
在实施项目的某处,如下所示:奇怪的是:现在所有来自commons项目的实体类都被生成了。因此我限制了maven的路径: