2010-08-20 6 views
0

Je suis en train d'enlever une version de l'historique des versions et je reçois javax.jcr.ReferentialIntegrityException: Impossible de supprimer la version. Au moins une fois référencé.Impossible de supprimer la version dans Jackrabbit

Lorsque j'essaie de supprimer toutes les références à la version, il semble qu'il n'y en a pas et ne me permet toujours pas de supprimer la version. Je suis sûr que ce n'est pas la version racine et je suis également sûr que ce n'est pas le premier après la racine.

Ceci est mon code:

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

Toute aide est grandement appréciée, merci.

Répondre

3

L'appel checkin() qui crée votre version sur la première ligne de votre exemple définit la référence jcr:baseVersion du noeud versionable à la version que vous venez de créer. L'instruction verRef.remove() ne peut pas supprimer cette référence, car la propriété jcr: baseVersion est protégée.

Vous devez supprimer le nœud de contenu ou utiliser des méthodes telles que checkin() ou update() pour que la référence jcr:baseVersion pointe vers une autre version avant de pouvoir supprimer cette version.

Questions connexes