Java 如何使用JCR中的SQL从子名称中检索父名称

Java 如何使用JCR中的SQL从子名称中检索父名称,java,sql,jcr,magnolia,Java,Sql,Jcr,Magnolia,我在JCR repo中有下面的节点结构。我正在努力检索给定子节点(789)的父节点(12345) /12345/项目/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来实现

我在JCR repo中有下面的节点结构。我正在努力检索给定子节点(789)的父节点(12345)

/12345/项目/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来检索父对象的父对象


提前感谢

JCR SQL语言不支持联接


另一方面,JCR-SQL2语言确实支持连接。事实上,我刚刚尝试了这个精确的JCR-SQL2查询,它在ModeShape中运行得非常好。

JCR SQL语言不支持连接


另一方面,JCR-SQL2语言确实支持连接。事实上,我刚刚尝试了这个精确的JCR-SQL2查询,它在ModeShape中运行得非常好。

正如Randall在上面提到的那样-该查询非常有效

我不会猜到,但既然您将其标记为Magnolia,我猜您试图通过AdminCentral/Dev/jcrquerys应用程序执行此查询。此应用不支持选择器。这就是这里的全部问题。如果您使用与下面类似的脚本通过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()
嗯,,
Jan

正如Randall在上面提到的,这个查询是完全有效的

我不会猜到,但既然您将其标记为Magnolia,我猜您试图通过AdminCentral/Dev/jcrquerys应用程序执行此查询。此应用不支持选择器。这就是这里的全部问题。如果您使用与下面类似的脚本通过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()
嗯,, 一月