如何在外部实体上生成 query-dsl Q 类?

mem*_*und 2 java spring jpa querydsl

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

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

    private String firstname;
    
    @NotNull
    private String lastname;
}
Run Code Online (Sandbox Code Playgroud)

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

mem*_*und 6

我找到了解决方案。但我不知道这是否是正确的方法,所以仍然很高兴收到您的评论。

package-info在实施项目中创建一个如下所示的地方:

@QueryEntities(value = {Person.class})
package my.impl.project
Run Code Online (Sandbox Code Playgroud)

奇怪的是:现在来自 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>
Run Code Online (Sandbox Code Playgroud)