关于树:如何使用Room进行完整的分支祖先查询?

How to do full branch ancestry queries with Room?

我试图将路径枚举进入Room。 有两个主要的过滤用例:

  • 隐藏文件夹A隐藏后代AA,AB等。
  • 或者,选择嵌套关键字"Bavaria"选择所有祖先"Europe">"Germany">"Bavaria"。

这些表不会变得很大,因此效率不那么令人担忧,所以我开始实现简单的路径实现查询:

1
2
3
4
5
6
7
1 | Europe  | /1
---------------------
2 | Germany | /1/2
---------------------
3 | Bavaria | /1/2/3
---------------------
4 | Asia    | /4

后人:

1
WHERE :path LIKE column || '%'

祖先:

1
WHERE column LIKE :path || '%'

这需要在每个插入中映射路径。 没什么大不了的,但不是简单的插入。

使用Room可以更轻松地完成这些完整的分支查询吗?


这是我在1.1.0中使用新的@RawQuery的解决方案:

https://gist.github.com/rcketscientist/4ded9ae64a770ff6929f27b5dbdbe13a