【发布时间】:2019-06-24 12:16:08
【问题描述】:
我正在尝试编写一个查询,在其中我使用 leftJoin 为我的聚合根获取子记录,如下所示:
dslContext.select()
.from(PARENT)
.leftJoin(CHILD)
.on(CHILD.PARENT_ID.eq(PARENT.ID))
.stream()
我的问题是我需要使用stream,因为记录的数量非常多,但是这样我就不能使用我通常在需要父子记录时使用的fetchGroups。
这就是我使用fetchGroups的方式:
dslContext.select()
.from(PARENT)
.leftJoin(CHILD)
.on(CHILD.PARENT_ID.eq(PARENT.ID))
.fetchGroups(Parent.class, Child.class)
这将为我创建一个不错的Map<Parent, Child>。
我尝试使用Collectors.groupingBy 来collect,但如何使用它并不简单,文档也没有解释它。
如何懒惰地一次性获取父子记录?
【问题讨论】:
-
我通过结合 rxjava/2 和 jooq 解决了这个问题。还记得在你的 jdbc 驱动程序中设置 fetchsize
-
我没有使用 rxjava,也不想使用。