javers json или строковое представление сущностей в ListChanges - PullRequest
1 голос
/ 18 марта 2020

У меня проблема с настройкой представления ListChanges в javers:

Учитывая две структуры:

@Entity
public class User {

   private Long id;
   ....

   @OneToMany
   private List<Authorisation> authorisations;
}

и

@Entity
public class Authorisation {

    @Id
    private Long id;
    ...

    private String name;
    private String scope;
    private String asset;

    @Override
    public String toString() {
       return name + " " + scope + ": " + asset;
    }
}

я хочу отобразить ListChanges Authorisation s в более удобочитаемой форме при запросе пользователя, у которого изменены полномочия. Когда я запрашиваю сейчас:

 QueryBuilder jqlQuery = QueryBuilder.byInstance(repo.findByUserId(userId));
 List<Change> changes = javers.findChanges(jqlQuery.withChildValueObjects().build());
 ....
 javers.getJsonConverter().toJson(changes.get(0))
 // or
 changes.get(0).toString()

я получаю результаты, подобные этим для ListChanges:

   {
    "changeType": "ListChange",
    ...
    "property": "authorisations",
    "propertyChangeType": "PROPERTY_VALUE_CHANGED",
    "elementChanges": [
      {
        "elementChangeType": "ValueAdded",
        "index": 0,
        "value": {
          "entity": "....Authorisation",
          "cdoId": 1
        }
      }
    ]
   }

или

ListChange{ 'authorisations' collection changes :
0. '...Authorisation/1' added }

я теперь хочу отрендерить Authorisation в более удобочитаемой форме, например, с использованием метода toString() из Authorisation, чтобы вывод был похож на

ListChange{ 'authorisations' collection changes :
0. '...Authorisation/abc def ghi' added }

Надеюсь, у кого-нибудь есть идея, поэтому заранее спасибо.

...