如何使用 JCR 中的 SQL 从子名称中检索父名称
Posted
技术标签:
【中文标题】如何使用 JCR 中的 SQL 从子名称中检索父名称【英文标题】:How do you retrieve parent name from child name using SQL from JCR 【发布时间】:2014-09-05 17:01:31 【问题描述】:我在 JCR 存储库中有以下节点结构。我正在努力检索给定子节点(789)的父节点(12345)。
/12345/items/789
I have tried:
SELECT parent.*
FROM [nt:base] AS parent
INNER JOIN [nt:base] AS child ON ISCHILDNODE(child,parent)
WHERE name(child) = '789'
但我不断收到“此查询结果包含多个选择器”的结果。
我必须使用 sql 或 jcr-sql2 来执行此操作,例如,我不想使用 java 来检索父级的父级。
提前致谢
【问题讨论】:
【参考方案1】:正如上面提到的兰德尔 - 查询是完全有效的。
我不会猜到,但由于您将其标记为 Magnolia,我推测您尝试通过 AdminCentral/Dev/JCRQueries 应用程序执行此查询。此应用不支持选择器。这就是这里的全部问题。如果您使用类似于下面的脚本通过 groovy 控制台运行它,它将正常工作。
query = "SELECT parent.* FROM [nt:base] AS parent INNER JOIN [nt:base] AS child ON ISCHILDNODE(child,parent) WHERE name(child) = '789'"
MgnlContext.getJCRSession("your_workspace").workspace.queryManager.createQuery(query,"JCR-SQL2").execute()
HTH, 一月
【讨论】:
【参考方案2】:JCR SQL 语言不支持连接。
另一方面,JCR-SQL2 语言确实支持连接。事实上,我刚刚尝试了这个精确的 JCR-SQL2 查询,它在 ModeShape 中运行得非常好。
【讨论】:
以上是关于如何使用 JCR 中的 SQL 从子名称中检索父名称的主要内容,如果未能解决你的问题,请参考以下文章