Java 通过左侧联接表/Querydsl上的QBean映射使用空属性的对象
我正在使用Querydsl 4.1.0从数据库生成我的Qtable,我自己也在创建Qbean,以便将结果转换为Java对象。我面临的问题是,我的A类有一个B类属性,如果我使用“左连接B”,那么如果数据库中A的id不存在B,这将导致该行B表中这些列的值为空,那么转换后的A对象将有一个B对象,具有所有空属性。是否有任何方法可以避免实例化这个不需要的B对象 我可以看到这里的问题是QBean的newInstance方法总是创建一个B实例并返回它,而不管所有字段的值是否为null,这在我看来是不正确的 我的班级:Java 通过左侧联接表/Querydsl上的QBean映射使用空属性的对象,java,querydsl,Java,Querydsl,我正在使用Querydsl 4.1.0从数据库生成我的Qtable,我自己也在创建Qbean,以便将结果转换为Java对象。我面临的问题是,我的A类有一个B类属性,如果我使用“左连接B”,那么如果数据库中A的id不存在B,这将导致该行B表中这些列的值为空,那么转换后的A对象将有一个B对象,具有所有空属性。是否有任何方法可以避免实例化这个不需要的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"));
我的问题是:
Map<Integer, Contact> resultMap = queryFactory.from(qContact)
.leftJoin(qContact.contactAddressFK, qAddress)
.transform(groupBy(qContact.id).as(contactQBean));
你的问题太难太复杂了。我不知道答案。但也许您可以尝试转到IDE并从堆栈中复制一些其他代码。
希望这对堆叠溢出有帮助Welcom!在您的问题中添加最少的代码示例。
Map<Integer, Contact> resultMap = queryFactory.from(qContact)
.leftJoin(qContact.contactAddressFK, qAddress)
.transform(groupBy(qContact.id).as(contactQBean));