如何使用 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 从子名称中检索父名称的主要内容,如果未能解决你的问题,请参考以下文章

JCR 长耳兔分页

检索并分配 jcr:mixinTypes magnolia 中的多值属性

SQL查询在一行中选择父名和子名

Swift UI 如何从子视图中检索状态

如何更改 JCR 节点的名称?

从子类别中检索特定的 JSON 密钥