Не могу удалить версию в Jackrabbit - PullRequest
0 голосов
/ 20 августа 2010

Я пытаюсь удалить версию из истории версий и получаю 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 Ответ

3 голосов
/ 25 августа 2010

Вызов checkin(), который создает вашу версию в первой строке вашего примера, устанавливает ссылку jcr:baseVersion из версионного узла на версию, которую вы только что создали.Оператор verRef.remove() не может удалить эту ссылку, поскольку свойство jcr: baseVersion защищено.

Вам необходимо либо удалить узел содержимого, либо использовать методы, такие как checkin() или update(), чтобы сделать jcr:baseVersion ссылка, указывающая на другую версию, прежде чем вы сможете удалить эту версию.

...