Есть ли способ заставить QueryDSL автоматически использовать сгенерированный полный конструктор? - PullRequest
0 голосов
/ 18 марта 2020

Используя модуль SQL QueryDSL (без JPA / Hibernate), я использую возможность QueryDSL для генерации DTO-компонентов из соединения SQL. Я указываю setAddFullConstructor( true ) на BeanSerializer:

    MetaDataExporter beanExporter = new MetaDataExporter();
    // . . .
    BeanSerializer beanSerializer = new BeanSerializer();
    beanSerializer.setAddFullConstructor( true );
    beanSerializer.setAddToString( true );
    beanExporter.setBeanSerializer( beanSerializer );

    try ( Connection con = dataSource.getConnection() ) {
        beanExporter.export( con.getMetaData() );
    }

DTO генерируются правильно - конструктор есть - однако я обнаружил, что он не вызывается по умолчанию, если Я пишу запрос в виде:

readQueries.selectFrom( QMybean.mybean ).fetch();

Я понимаю, что могу заставить его использовать конструктор, используя один из следующих методов в классе Projections:

public static <T> ConstructorExpression<T> constructor(Class<? extends T> type, Expression<?>... exprs)

public static <T> ConstructorExpression<T> constructor(Class<? extends T> type, Class<?>[] paramTypes, Expression<?>... exprs)

public static <T> ConstructorExpression<T> constructor(Class<? extends T> type, Class<?>[] paramTypes, ImmutableList<Expression<?>> exprs)

Но мне интересно, есть ли способ заставить его использовать сгенерированный полный конструктор автоматически, без необходимости перечисления всех параметров. Заранее спасибо.

...