gpt4 book ai didi

java - jOOQ fetchGroups 不返回一对多关系的空集合

转载 作者:行者123 更新时间:2023-12-04 03:26:16 27 4
gpt4 key购买 nike

我有以下关于一对多关系的查询。

return create.select(Parent.asterisk(), Child.asterisk())
.from(PARENT)
.leftJoin(CHILD)
.onKey()
.where(myCondition)
.fetchGroups(ParentRecord.class, ChildRecord.class);
当没有子记录时,我不会得到空列表。总是有一个子记录,其所有字段都设置为空。
[Child(id=null, name=null)]
防止返回这些空记录的最佳方法是什么?

最佳答案

This is a popular use-case, so I've blogged about this part of jOOQ's API here.
您可以使用自己的收集器:

Map<ParentRecord, List<ChildRecord>> result =
create.select(PARENT.asterisk(), CHILD.asterisk())
.from(PARENT)
.leftJoin(CHILD).onKey()
.where(myCondition)
.collect(groupingBy(
r -> r.into(PARENT), filtering(
r -> r.get(CHILD.ID) != null, mapping(
r -> r.into(CHILD), toList()
)
)
));
我假设这些静态导入:
import static java.util.stream.Collectors.*;
import static org.jooq.impl.DSL.*;
import static com.example.generated.Tables.*;
这是一个常见的问题。改进当前的 API 可能是有意义的: https://github.com/jOOQ/jOOQ/issues/11888

关于java - jOOQ fetchGroups 不返回一对多关系的空集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67523332/

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