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