2010-08-20 6 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 속성이 보호되므로이 참조를 제거 할 수 없습니다.

이 버전을 제거하기 전에 콘텐츠 노드를 제거하거나 checkin() 또는 update()과 같은 메서드를 사용하여 jcr:baseVersion 참조가 다른 버전을 가리 키도록해야합니다.

관련 문제