2010-08-20 3 views
0

Я пытаюсь удалить версию из истории версий, и я получаю javax.jcr.ReferentialIntegrityException: Не удается удалить версию. По крайней мере, один раз.Не удается удалить версию в Jackrabbit

Когда я пытаюсь удалить все ссылки на версию, кажется, что их нет и все еще не позволяет удалить версию. Я уверен, что это не корневая версия, и я также уверен, что это не первый после корня.

Это мой код:

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

Любая помощь очень ценится, спасибо.

ответ

3

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

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

Смежные вопросы