1

我正在尝试从版本历史记录中删除一个版本,但我收到了 javax.jcr.ReferentialIntegrityException: Unable to remove version。至少引用一次。

当我尝试删除对该版本的所有引用时,似乎没有任何引用并且仍然不允许我删除该版本。我确信这不是根版本,我也确定它不是根之后的第一个版本。

这是我的代码:

    Version ver = manager.checkin(parentNodePath);

    VersionHistory versionHistory = manager.getVersionHistory(parentNodePath);
    PropertyIterator versionReverences = ver.getReferences();
    for (Property verRef = versionReverences.nextProperty(); versionReverences.hasNext();) {
        verRef.remove();
    }
    session.save();
    versionHistory.removeVersion(ver.getName());

非常感谢任何帮助,谢谢。

4

1 回答 1

5

checkin()在示例的第一行创建您的版本的调用将可jcr:baseVersion版本节点的引用设置为您刚刚创建的版本。该verRef.remove()语句无法删除此引用,因为 jcr:baseVersion 属性受到保护。

您需要删除内容节点或使用类似的方法checkin()update()使jcr:baseVersion引用指向另一个版本,然后才能删除此版本。

于 2010-08-25T14:00:23.363 回答