首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JCR (ModeShape)中查询共享节点

在JCR (ModeShape)中查询共享节点
EN

Stack Overflow用户
提问于 2015-02-11 08:34:59
回答 1查看 342关注 0票数 1

我有一个用ModeShape (4.0.0.Final)实现的JCR内容存储库。存储库的结构非常简单,如下所示:

代码语言:javascript
复制
/ (root)
    Content/
        Item 1
        Item 2
        Item 3
        ...

    Tags/
        Foo/
        Bar/
        .../

该内容最初是在/Content下创建和存储的,作为[nt:unstructured]节点使用[mix:shareable]混音。在对内容项进行标记时,如果标记节点尚未在/Tags下创建,则首先在它下创建标记节点,并使用Workspace.clone(...) (如描述的在JCR2.0规范第14.1节中,共享节点的创建 )将内容节点共享/克隆到标记节点。

(我觉得这并不特别优雅,我刚刚读过这个答案是关于在JCR中创建一个基于标签的搜索系统。,所以我意识到这可能不是最好的/最快的/最可扩展的解决方案。但是我“继承”了我之前的开发人员的这个解决方案,所以我希望我不必重写它.)

无论如何,共享本身似乎是有效的(我可以使用ModeShape Content应用程序或通过session.getRootNode().getNode("Tags/Foo").getNodes()编程验证节点是否存在)。,但我无法使用查询找到任何共享节点!

我最初的尝试(使用JCR_SQL2语法)是:

代码语言:javascript
复制
SELECT * FROM [nt:unstructured] AS content
    WHERE PATH(content) LIKE '/Tags/Foo/%' // ISDECENDANTNODE(content, '/Tags/Foo') gives same result
    ORDER BY NAME(content)

结果令我吃惊的是,结果是空的。

我也尝试过像这样在[mix:shareable]中搜索:

代码语言:javascript
复制
SELECT * FROM [mix:shareable] AS content
    WHERE PATH(content) LIKE '/Tags/Foo/%' // ISDECENDANTNODE(content, '/Tags/Foo') gives same result
    ORDER BY NAME(content)

这还返回了一个空的结果集。

从查询中可以看出:

代码语言:javascript
复制
SELECT * FROM [nt:unstructured] AS content
    WHERE PATH(content) LIKE '/Content/%' // ISDECENDANTNODE(content, '/Content') works just as well
    ORDER BY NAME(content)

...that查询否则工作,并返回预期的结果(所有内容)。它只是在搜索共享节点时不起作用。

如何使用ModeShape?正确搜索JCR中的共享节点

更新:我升级到4.0,最后看看这是否有帮助,但它对所描述的行为没有任何影响。

EN

回答 1

Stack Overflow用户

发布于 2015-02-13 14:35:35

来自https://developer.jboss.org/message/918745#918745的交叉贴

共享节点实际上只是一个节点,它出现在工作区中的多个位置,因此还不清楚为该可共享节点获取多个查询结果在语义上意味着什么。每个JSR-283 (JCR2.0)规范第14.16节实现都可以在一个或多个/所有这些位置的查询结果中免费包含可共享的节点。

ModeShape 2.x和3.x总是在查询结果中返回共享节点的单个位置,因为这是引用实现的行为,这是我们从用户那里得到的反馈。当我们在Modeshape4.0上工作时,我们试图返回多个结果,但是我们遇到了TCK的问题和这个新的预期行为的不确定性。因此,我们放弃了目标,实现了查询,只返回一个共享位置,就像2.x和3.x一样。

我可能错了,但我不确定是否有任何JCR实现返回单个共享节点的多个行,但我可能错了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28449788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档