Невозможно получить все столбцы QClass - PullRequest
0 голосов
/ 29 января 2020

Не удается найти способ получить все столбцы из сгенерированного QClass.

Как я могу определить в методе выбора все столбцы foo (в действительности их много)?

build. gradle:

...

ext {
    queryDslVersion = '4.2.2'
    javaxAnnotationVersion = '1.3.2'
}

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-webflux')

    compile "com.querydsl:querydsl-sql:${queryDslVersion}"

    compileOnly('org.projectlombok:lombok')

    annotationProcessor('org.projectlombok:lombok')
    annotationProcessor("com.querydsl:querydsl-apt:${queryDslVersion}:general")
    annotationProcessor("javax.annotation:javax.annotation-api:${javaxAnnotationVersion}")

    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
    testImplementation('io.projectreactor:reactor-test')
}

idea {
    module {
        sourceDirs += file('generated/')
        generatedSourceDirs += file('generated/')
    }
}

Попробуйте составить запрос:

var query = new SQLQuery<>(PostgreSQLTemplates.builder().printSchema().build());
query.select(foo) // foo has no all() or list() methods, nothing found that might be related to listing allcolumns
     .from(foo)
     ...

Foo entity:

@Data
@Table
@QueryEntity
public class Foo {

    @Id
    private UUID       id;
    private String  name;

    ...

}

Генерируемый QFoo:

/**
 * QFoo is a Querydsl query type for Foo
 */
@Generated("com.querydsl.codegen.EntitySerializer")
public class QFoo extends EntityPathBase<Foo> {

    private static final long serialVersionUID = -657824049L;

    public static final QFoo foo = new QFoo("foo");

    public final StringPath name = createString("name");

    public final ComparablePath<java.util.UUID> id = createComparable("id", java.util.UUID.class);

    ...

    public QFoo(String variable) {
        super(Foo.class, forVariable(variable));
    }

    public QFoo(Path<? extends Foo> path) {
        super(path.getType(), path.getMetadata());
    }

    public QFoo(PathMetadata metadata) {
        super(Foo.class, metadata);
    }

}
...