1

バージョン履歴からバージョンを削除しようとしていますが、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());

どんな助けでも大歓迎です、ありがとう。

4

1 に答える 1

5

例のcheckin()最初の行にバージョンを作成する呼び出しは、jcr:baseVersionバージョン管理可能なノードから作成したバージョンへの参照を設定します。verRef.remove()jcr:baseVersionプロパティが保護されているため、ステートメントはこの参照を削除できません。

このバージョンを削除する前に、コンテンツノードを削除するか、またはのようなメソッドを使用checkin()して別のバージョンを指すupdate()ように参照する必要があります。jcr:baseVersion

于 2010-08-25T14:00:23.363 に答える