有没有一种方法使QueryDSL自动使用生成的完整构造函数?

问题描述 投票:0回答:1

使用QueryDSL的SQL模块(没有JPA / Hibernate),我利用QueryDSL的功能从SQL连接生成DTO bean。我在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)

但是,我想知道是否有一种方法可以让它自动使用生成的完整构造函数,而不必列出所有参数。预先感谢。

java jdbc querydsl
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.