2010-08-20 62 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引用從可版本節點設置爲您剛剛創建的版本。由於jcr:baseVersion屬性受保護,因此verRef.remove()語句無法刪除此引用。

您需要刪除內容節點或使用類似checkin()update()的方法使jcr:baseVersion引用指向另一個版本,然後才能刪除此版本。