我的模型类使用 JPA 的@Entity
注释进行注释。 除了扩展 Hibernate Envers 的 DefaultRevisionEntity 的类之外,所有其他类都可以正常生成。 在mvn clean test
期间代码生成失败并出现以下错误
/.../target/generated-sources/java/.../QRevision.java:[23,37] cannot find symbol
symbol : class QDefaultRevisionEntity
location: package org.hibernate.envers
/.../target/generated-sources/java/.../QRevision.java:[23,94] cannot find symbol
symbol : class QDefaultRevisionEntity
location: package org.hibernate.envers
import javax.persistence.Entity;
import org.hibernate.envers.DefaultRevisionEntity;
import org.hibernate.envers.RevisionEntity;
<strong i="11">@Entity</strong>
@RevisionEntity(CustomRevisionListener.class)
public class Revision extends DefaultRevisionEntity {
// Fields are irrelevant
}
<dependency>
<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>2.7.3</version>
</dependency>
...
<build>
<plugins>
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.0.6</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>
<processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
<excludes>
<exclude>com.itella.ptp.model.Revision</exclude>
</excludes>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<classifier>apt</classifier>
<version>2.7.3</version>
</dependency>
</dependencies>
</plugin>
...
</plugins>
</build>
对外部注释实体类型的引用应该在类路径中具有可用的 Q 类型。
要强制生成 QDefaultRevisionEntity,您可以将以下注释添加到 package-info.java 文件中
@QueryEntities({DefaultRevisionEntity.class})
package com.example.domain;
import org.hibernate.envers.DefaultRevisionEntity;
import com.mysema.query.annotations.QueryEntities;
这将为您提供具有以下内容的 QDefaultRevisionEntity.java
package org.hibernate.envers;
import static com.mysema.query.types.PathMetadataFactory.*;
import com.mysema.query.types.*;
import com.mysema.query.types.path.*;
import javax.annotation.Generated;
/**
* QDefaultRevisionEntity is a Querydsl query type for DefaultRevisionEntity
*/
@Generated("com.mysema.query.codegen.EmbeddableSerializer")
public class QDefaultRevisionEntity extends BeanPath<DefaultRevisionEntity> {
private static final long serialVersionUID = -546101328;
public static final QDefaultRevisionEntity defaultRevisionEntity = new QDefaultRevisionEntity("defaultRevisionEntity");
public final NumberPath<Integer> id = createNumber("id", Integer.class);
public final DateTimePath<java.util.Date> revisionDate = createDateTime("revisionDate", java.util.Date.class);
public final NumberPath<Long> timestamp = createNumber("timestamp", Long.class);
public QDefaultRevisionEntity(String variable) {
super(DefaultRevisionEntity.class, forVariable(variable));
}
public QDefaultRevisionEntity(Path<? extends DefaultRevisionEntity> path) {
super(path.getType(), path.getMetadata());
}
public QDefaultRevisionEntity(PathMetadata<?> metadata) {
super(DefaultRevisionEntity.class, metadata);
}
}
谢谢指点,搞定了!
哇! 谢谢@timowest
哇 ! 真的行 ! 谢谢@timowest
我的代码上只有@Entity ,它仍然有效。
最有用的评论
对外部注释实体类型的引用应该在类路径中具有可用的 Q 类型。
要强制生成 QDefaultRevisionEntity,您可以将以下注释添加到 package-info.java 文件中
这将为您提供具有以下内容的 QDefaultRevisionEntity.java