我正在使用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并从堆栈中复制一些其他代码。
希望能帮助到你