【发布时间】:2021-08-17 23:35:40
【问题描述】:
我有一个包含id 和parentId 列的表:我将此结构称为邻接列表。
所以,现在我想得到任意 id 的所有孩子。此问题的经典解决方案使用递归,例如here is Postgres procedure or CTE implementation。
我目前正在使用 Spring Webflux 和 Spring Data R2DBC + Postgres R2DBC 驱动程序(尚不支持存储过程)。
我怎样才能以反应式的方式解决这个问题?甚至有可能还是我错过了一些概念上的错误?
UPD 1:
让我们想象一下我们的数据:
+-------------+---------+
|id |parent_id|
+-------------+---------+
|root |NULL |
|id1 |root |
|dir1 |root |
|dir1_id1 |dir1 |
|dir1_dir1 |dir1 |
|dir1_dir1_id1|dir1_dir1|
+-------------+---------+
现在我想在 ReactiveCrudRepository 中有一个方法,它将返回提供的 id 的所有子项。
例如,使用示例数据:通过提供 id='dir1',我想获取具有 ids 的孩子:['dir1_id1', "dir1_dir1", "dir1_dir1_id1"]。
【问题讨论】:
-
如果你仍然可以使用递归 cte ,你不一定需要 proc
-
@eshirvana,是的,我可以,但是来自 PG Wiki 的 CTE 涉及对表进行全扫描(从 t 中选择 *),这可能只是一个临时解决方案。在我的用例中,邻接表可能非常大(> 10k 行)。
-
你最好问一个更好的问题,确切地说你想要什么
-
我的意思是提供样本数据和所需的输出
-
@eshirvana,我已经编辑了问题。
标签: postgresql spring-webflux spring-data-r2dbc r2dbc r2dbc-postgresql