Querydsl: Pembuatan kode untuk perluasan kelas Hibernate Envers DefaultRevisionEntiry gagal dengan JPAAnnotationProcessor saat menggunakan JPA/Hibernate dan Hibernate Envers

Dibuat pada 28 Sep 2012  ·  4Komentar  ·  Sumber: querydsl/querydsl

Kelas model saya dianotasi dengan anotasi @Entity JPA. Semua kelas lain dihasilkan dengan baik, kecuali yang memperluas DefaultRevisionEntity Hibernate Envers. Pembuatan kode gagal dengan kesalahan berikut selama 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
revisi.java:
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
}
pom.xml
<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>

Komentar yang paling membantu

Referensi ke tipe entitas beranotasi eksternal diharapkan memiliki tipe-Q yang sudah tersedia di classpath.

Untuk menegakkan pembuatan QDefaultRevisionEntity, Anda dapat menambahkan anotasi berikut ke dalam file package-info.java

@QueryEntities({DefaultRevisionEntity.class})
package com.example.domain;

import org.hibernate.envers.DefaultRevisionEntity;
import com.mysema.query.annotations.QueryEntities;

Ini akan membuat Anda QDefaultRevisionEntity.java dengan konten berikut:

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);
    }

}

Semua 4 komentar

Referensi ke tipe entitas beranotasi eksternal diharapkan memiliki tipe-Q yang sudah tersedia di classpath.

Untuk menegakkan pembuatan QDefaultRevisionEntity, Anda dapat menambahkan anotasi berikut ke dalam file package-info.java

@QueryEntities({DefaultRevisionEntity.class})
package com.example.domain;

import org.hibernate.envers.DefaultRevisionEntity;
import com.mysema.query.annotations.QueryEntities;

Ini akan membuat Anda QDefaultRevisionEntity.java dengan konten berikut:

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);
    }

}

Terima kasih atas penunjuknya, berhasil!

Wow! Terima kasih @timowest

Wow ! Ini benar-benar bekerja! Terima kasih @timowest

Saya hanya memiliki @Entity pada kode saya dan masih berfungsi.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

intuitiveminds picture intuitiveminds  ·  8Komentar

mjungsbluth picture mjungsbluth  ·  6Komentar

jmpicnic picture jmpicnic  ·  7Komentar

okihouse picture okihouse  ·  5Komentar

robertandrewbain picture robertandrewbain  ·  5Komentar