无法删除Jackrabbit中的版本

时间:2010-08-20 14:05:22

标签: java jackrabbit jcr

我正在尝试从版本历史记录中删除某个版本,而我正在获取javax.jcr.ReferentialIntegrityException:无法删除版本。至少一次引用。

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

这是我的代码:

    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());

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

1 个答案:

答案 0 :(得分:3)

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

您需要删除内容节点或使用checkin()update()等方法使jcr:baseVersion引用指向其他版本,然后才能删除此版本。