gpt4 book ai didi

java - Apache Jackrabbit - 重复节点?

转载 作者:搜寻专家 更新时间:2023-11-01 02:53:43 25 4
gpt4 key购买 nike

使用 Apache Jackrabbit,我在完全相同的路径上创建了两个节点

root.addNode("hello");

我完全期待第二次添加会抛出 ItemExistsException as described here ,但它没有。

当我打印出节点的路径以尝试查看发生了什么时,我明白了/hello 对于第一个节点和/hello[2] 第二个节点

此外,当我删除节点时,在我保存 session 之前检查节点是否存在的测试通过,但在我保存 session 之后,相同条件的第二次测试失败

session.getNode("/hello").remove(); 
assertFalse(session.nodeExists("/hello"));

session.save();

assertFalse(session.nodeExists("/hello"));

这是怎么回事?这是 Jackrabbit 的错误还是某些偏离规范的功能?

最佳答案

您看到的是同名 sibling ,这是 Jackrabbit 和 JCR 的一个特征。 JSR-170 的首席开发人员 David Nuescheler 在 Jackrabbit WIKI 中写道:

While Same Name Siblings (SNS) have been introduced into the spec to allow compatibility with data structures that are designed for and expressed through XML and therefore are extremely valuable to JCR, SNS come with a substantial overhead and complexity for the repository.

...

For import of XML or interaction with existing XML SNS maybe necessary and useful but I have never used SNS, and never will in my "green field" data models.

所以基本上,您拥有同名兄弟以容纳 XML 数据的原因是您可以拥有多个同名元素。我在 Day 的 CQ WCM 中看到过同名 sibling ,但总体上似乎不鼓励使用它们。

关于java - Apache Jackrabbit - 重复节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6046896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com