我正在使用Querydsl 4.1.0从数据库生成我的Qtable,而且我自己创建了Qbean,用于将结果转换为Java对象。我面临的问题是,我的A类具有B类属性,如果我使用“ A左连接B”,则数据库中不存在A的ID的B(这将导致来自B表),转换后的A对象将具有B对象,并具有所有null属性。无论如何,要避免实例化这个不需要的B对象?

我可以看到这里的问题是QBean的newInstance()方法总是创建一个B实例并返回它,而不管所有字段的值都为null的事实,这在我看来并不正确。



我的课程 :

protected final  QBean<Contact> contactQBean =
                    Projection.fields(Contact.class,
                    qContact.id, qContact.firstName, qContact.lastName,
                    qContact.middleName, addressQBean.as("primaryAddress"));


------------------------

 public class Contact {
private Integer id;
private String firstName;
private String middleName;
private String lastName;
private Address primaryAddress;


我的查询:

Map<Integer, Contact> resultMap = queryFactory.from(qContact)

            .leftJoin(qContact.contactAddressFK, qAddress)

            .transform(groupBy(qContact.id).as(contactQBean));

最佳答案

您的问题太过困难和复杂。我不知道答案。但是也许您可以尝试进入IDE并从堆栈中复制一些其他代码。
希望能帮助到你

07-24 22:31