通过左侧联接表/ Querydsl

时间:2019-07-03 03:44:59

标签: java querydsl

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

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


我的课程:

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));

1 个答案:

答案 0 :(得分:0)

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