1

Application エンティティと User エンティティがあります。アプリケーションからユーザーへは 1 対多の関係があります。つまり、1 つのアプリケーションが複数のユーザーを持つことができます。
ユーザーを更新し、割り当てられたアプリケーションを変更します。これまでのところ、私は以下を持っています:

Diff diff = javers.compare(oldUser, newUser);
List<ReferenceChange> referenceChanges = diff.getChangesByType(ReferenceChange.class);
for (ReferenceChange referenceChange : referenceChanges) {
            Object oldRef = referenceChange.getLeftObject().get();
            Object newRef = referenceChange.getRightObject().get();             
            Diff refDiff = javers.compare(oldRef,newRef);               
        }


デバッグ中に以下の結果を見つけてください
。 Application/7', newRef:'com.ds.appmanager.services.domain.Application/3'}
oldRef
アプリケーション [applicationId=7, applicationName=KYC, applicationDesc=DEV_TEST, applicationLaunch=2016-12-31 00:00:00.0 , live=false]
newRef
アプリケーション [applicationId=3, applicationName=KYC, applicationDesc=help, applicationLaunch=Sat Mar 12 00:00:00 IST 2016, live=true]

両方のオブジェクトを javars.compare(oldRef,newRef) に渡すと、referenceChangesと同じ結果が得られます。applicationDesc、oldVal = DEV_TEST、newVal = hellp など、各プロパティの値の変更が表示されるはずだと思いました。

ここで何か不足していますか?私がやりたいことは、User オブジェクト内で参照される Application オブジェクトのプロパティの値の変更を取得することだけです。

PS: に変更Object oldRef = referenceChange.getLeftObject().get();するとObject oldRef = referenceChange.getLeftObject();JaversException: CLASS_EXTRACTION_ERROR JaVers bootstrap error - Don't know how to extract Class from type 'T'.

更新
Debug を実行しているときに ValueChanges を取得していないことに注意してください
Diff refDiff = javers.compare(oldRef,newRef);
。次の変更が表示されます。

Diff:

1. NewObject{globalId:'com.ds.appmanager.services.domain.Application/7'}
2. ObjectRemoved{globalId:'com.ds.appmanager.services.domain.User/5'}
3. ObjectRemoved{globalId: 'com.ds.appmanager.services.domain.Application/3'}
4.ObjectRemoved{globalId:'com.ds.appmanager.services.domain.User/6'}
5.ObjectRemoved{globalId:'com.ds.appmanager .services.domain.User/7'}
6. ReferenceChange{globalId:'com.ds.appmanager.services.domain.User/3', property:'application', oldRef:'com.ds.appmanager.services.domain .Application/3', newRef:'com.ds.appmanager.services.domain.Application/7'}

4

0 に答える 0