如何使用查询中的uuid在JCR中定位节点

时间:2016-03-16 20:24:13

标签: sql cq5 aem jcr

这是我得到的错误。

  

16.03.2016 12:02:16.413 WARN [xxx.xxx.xx.xxx [1458147736268] GET / zh -cn-employees-leaders / employee-s-toolkit2 / epd-update / epd- update-archives / caterpillar-news / coming-brand-webinarfocusonmarketing.html HTTP / 1.1] com.day.cq.wcm.core.impl.LanguageManagerImpl Error while   检索语言属性。 javax.jcr.AccessDeniedException:不能   读取项目xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx(字母数字)

我正在尝试使用xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx在JCR中找到节点,我认为这是uuid,使用AEM中的查询。

  • xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx实际上是uuid吗?
  • 如何找到源节点,导致问题?

我尝试在jcr中运行带有上述id的sql,但是没有返回任何结果。

//*[jcr:contains(., '91186155-45ad-474-9ad9-d5156a398629')] order by @jcr:score descending

非常感谢任何其他见解。

3 个答案:

答案 0 :(得分:5)

如果您知道Node的UUID,则不需要查询,只需使用Session.getNodeByIdentifier(String id)方法。

答案 1 :(得分:1)

你的查询不是你所说的SQL,它是XPATH。这是一个错字还是你错误地运行了查询?

它看起来像UUID。您可以查询jcr:uuid属性,也可以继续进行全文搜索。

XPATH:

/jcr:root//*[jcr:contains(., '91186155-45ad-474-9ad9-d5156a398629')]

/jcr:root//*[@jcr:uuid='91186155-45ad-474-9ad9-d5156a398629']

JCR-SQL2:

SELECT * FROM [nt:base] AS s WHERE contains(s.*, '91186155-45ad-474-9ad9-d5156a398629')

SELECT * FROM [nt:base] WHERE [jcr:uuid] = '91186155-45ad-474-9ad9-d5156a398629'

您的帐户拥有哪些读取权限?您将在jcr:uuid下找到/jcr:system/jcr:versionStorage查询的大量结果。

答案 2 :(得分:0)

使用QueryBuilderDebugger,(localhost:4502 / libs / cq / search / content / querydebug.html)并运行如下的类似查询以获取给定uuid的节点:

property=jcr:uuid
property.value=e69b256e-a466-3730-866b-de22c82ab8ck
path=/home
type=rep:Group
p.limit=10