如何使用 Room 进行完整的分支祖先查询?
How to do full branch ancestry queries with Room?
我试图将路径枚举塞进 Room。有两个主要的过滤用例:
- 隐藏文件夹A隐藏后代AA、AB等
- 或者选择嵌套关键字 "Bavaria" 选择所有祖先 "Europe" > "Germany" > "Bavaria".
这些表不会变大,所以效率不是那么重要,所以我开始实现简单的路径具体化查询:
1 | Europe | /1
---------------------
2 | Germany | /1/2
---------------------
3 | Bavaria | /1/2/3
---------------------
4 | Asia | /4
后代:
WHERE :path LIKE column || '%'
祖先:
WHERE column LIKE :path || '%'
这需要在每个插入中映射路径。没什么大不了的,但不是简单的插入。
使用 Room 可以更轻松地完成这些完整的分支查询吗?
这是我使用 1.1.0 中新 @RawQuery
的解决方案:
https://gist.github.com/rcketscientist/4ded9ae64a770ff6929f27b5dbdbe13a
我试图将路径枚举塞进 Room。有两个主要的过滤用例:
- 隐藏文件夹A隐藏后代AA、AB等
- 或者选择嵌套关键字 "Bavaria" 选择所有祖先 "Europe" > "Germany" > "Bavaria".
这些表不会变大,所以效率不是那么重要,所以我开始实现简单的路径具体化查询:
1 | Europe | /1
---------------------
2 | Germany | /1/2
---------------------
3 | Bavaria | /1/2/3
---------------------
4 | Asia | /4
后代:
WHERE :path LIKE column || '%'
祖先:
WHERE column LIKE :path || '%'
这需要在每个插入中映射路径。没什么大不了的,但不是简单的插入。
使用 Room 可以更轻松地完成这些完整的分支查询吗?
这是我使用 1.1.0 中新 @RawQuery
的解决方案:
https://gist.github.com/rcketscientist/4ded9ae64a770ff6929f27b5dbdbe13a