gpt4 book ai didi

java - 通过左连接表/Querydsl 上的 QBean 映射具有 null 属性的对象

转载 作者:行者123 更新时间:2023-12-02 03:35:46 28 4
gpt4 key购买 nike

我正在使用 Querydsl 4.1.0 从数据库生成 Qtable,并且自己创建 Qbean 以将结果转换为我的 Java 对象。我面临的问题是,我的 A 类有一个 B 类属性,如果我使用“A left join B”,那么如果数据库中不存在 A 的 id 的 B(这将导致这些列的值为空值) B 表在那一行),我的 A 对象在转换后将有一个 B 对象,并且所有属性均为 null。有没有办法避免实例化这个不需要的 B 对象?

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

<小时/>

我的类(class):

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 并从堆栈中复制一些其他代码。希望对您有帮助

关于java - 通过左连接表/Querydsl 上的 QBean 映射具有 null 属性的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56862643/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com