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