java - 如何使用 JCR 中的 SQL 从子名中检索父名

标签 java sql jcr magnolia

我在 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 来检索父级的父级。

提前致谢

最佳答案

正如兰德尔上面提到的 - 查询完全有效。

我不会猜到,但既然您将其标记为 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, 一月

关于java - 如何使用 JCR 中的 SQL 从子名中检索父名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25690708/

相关文章:

基于不同时间标签/时间戳和用户选择的输入 (T-SQL) 的 SQL 分段/平均

c# - 优雅地处理同一时间和同一天的预订

MySQL order by count子查询

java - 通过 sardine-webdav -jcr 添加 zip 文件

Java异常类图?

java - 从 Criteria 或 : Dynamic WHERE clause with dynamic columns in select 获取 WHERE 子句作为 HQL 字符串

java - 比较器(排序)按优先级比较具有 3 个属性的对象数组列表

authentication - CQ 如何验证每个请求?

java - 是否有任何键盘快捷键可以在 IntelliJ Idea 中的类上添加 @SuppressWarnings?

java - 如何使用 Selenium 在文本区域中输入制表符?