如何在 querydsl 生成中跳过 @Transient 字段?

How to skip @Transient fields in querydsl generation?

我有一个 @Entity class,我使用 querydsl 代码生成。

问题:我的实体有一个包含一些 @Transient 字段的父实体。并且在生成过程中不会跳过这些。

package com.domain.myentity

@Entity
public class MyEntity extends AuditingEntity {

}


package com.auditing

@MappedSuperclass
public class AuditingEntity {
    @Transient
    private transient Object obj;
}

包-info.java:

@QueryEntities(value = MyEntity.class)
package com.domain.myentity

import com.querydsl.core.annotations.QueryEntities;
import com.domain.myentity.MyEntity;

问题:如何让 querydsl 自动忽略任何 @Transient 字段? 目前根本原因可能是 AuditingEntity 与域实体位于不同的文件夹中,因此未在 querydsl 的 package-info.java 中列出。但是如何在不移动审计实体的情况下解决它?

生成时间:

<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>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>com.querydsl</groupId>
            <artifactId>querydsl-apt</artifactId>
            <version>${querydsl.version}</version>
        </dependency>
    </dependencies>
</plugin>

你可以尝试将瞬态声明为 transient String obj; 而不是

@Transient
private Object obj;

如果你想阻止 QueryDsl 映射你应该使用的字段或方法 @QueryType - 注释带有 PropertyType.NONE.

The value PropertyType.NONE can be used to skip a property in the query type generation. This case is different from @Transient or @QueryTransient annotated properties, where properties are not persisted. PropertyType.NONE just omits the property from the Querydsl query type.

@Entity
public class MyEntity {


    @QueryType(PropertyType.NONE)
    public String stringNotInQuerydsl;

}

查看官方文档here