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

How to locate the node in JCR using uuid from query

这是我得到的错误。

16.03.2016 12:02:16.413 WARN [xxx.xxx.xx.xxx [1458147736268] GET /en/employees-leaders/employee-s-toolkit2/epd-update/epd-update-archives/caterpillar-news/upcoming-brand-webinarfocusonmarketing.html HTTP/1.1] com.day.cq.wcm.core.impl.LanguageManagerImpl Error while retrieving language property. javax.jcr.AccessDeniedException: cannot read item xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (alpha-numeric)

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

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

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

任何其他见解将不胜感激。

您的查询不是您所说的 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.

下找到很多结果

如果知道节点的UUID就不需要查询,直接使用Session.getNodeByIdentifier(String id)方法即可。

使用 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