【问题标题】:Apache Jackrabbit - Duplicate Node?Apache Jackrabbit - 重复节点?
【发布时间】:2011-08-28 03:52:57
【问题描述】:

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

root.addNode("hello");

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

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

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

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

session.save(); 

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

这里发生了什么?这是一个错误还是 Jackrabbit 的某些功能偏离了规范?

【问题讨论】:

    标签: java content-management jackrabbit


    【解决方案1】:

    您看到的是同名兄弟姐妹,这是 Jackrabbit 和 JCR 的一个功能。 JSR-170 的首席开发人员 David Nuescheler 在Jackrabbit WIKI 中写道:

    虽然同名兄弟 (SNS) 已被引入规范,以允许与为 XML 设计和表达的数据结构兼容,因此对 JCR 非常有价值,但 SNS 为存储库带来了大量开销和复杂性。

    ...

    对于 XML 的导入或与现有 XML SNS 的交互可能是必要且有用的,但我从未使用过 SNS,也永远不会在我的“绿地”数据模型中使用。

    所以基本上,你有同名的兄弟姐妹来容纳 XML 数据的原因,你可以有多个同名的元素。我已经看到在 Day 的 CQ WCM 中使用了同名的兄弟姐妹,但总体上似乎不鼓励使用它们。

    【讨论】:

      猜你喜欢
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      • 2021-06-19
      • 2011-03-18
      相关资源
      最近更新 更多