Сериализация Json близко к тому, что показано в выводе метода prettyPrint () - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь экспортировать данные diff в мой интерфейс, используя json-конвертер javers, но я не могу получить то же самое, что показано в возврате Diff.prettyPrint (), который содержит «поле» из «x» в 'y' "... вывод json включает некоторые бесполезные данные, и даже порядок отображаемых данных отличается от одного к другому.

Мой фактический код:

Diff diff = javers.compare(projOriginal,projNew);
String diffJson = javers.getJsonConverter().toJson(diff);

Вывод той же переменной diff: PrettyPrint:

* object removed: myproj.domain.entity.projeto.Requisito/5
* new object: myproj.domain.entity.projeto.Requisito/7
* changes on myproj.domain.entity.projeto.Requisito/7 :
  - 'descricao' changed from '' to 'requisito 1'
  - 'id' changed from '' to '7'
* changes on myproj.domain.entity.projeto.Risco/6 :
  - 'fatorPriorizacao' changed from '0.10' to '0.100000000000000006'
* new object: myproj.domain.entity.projeto.Requisito/8
* changes on myproj.domain.entity.projeto.Requisito/8 :
  - 'descricao' changed from '' to 'lionel messi'
  - 'id' changed from '' to '8'
* changes on myproj.domain.entity.usuario.Usuario/1 :
  - 'ultimoAcesso' changed from '29 ago 2018, 14:50:28' to '05 set 2018, 14:35:29'
* changes on myproj.domain.entity.projeto.dto.ProjetoDTO/2 :
  - 'avisoComplexidade' changed from 'true' to 'false'
  - 'requisitosList' collection changes :
    0. '...Requisito/5' changed to '...Requisito/8'
    1. '...Requisito/7' added

JsonConverter:

{
  "changes": [
    {
      "changeType": "NewObject",
      "globalId": {
        "entity": "myproj.domain.entity.projeto.Requisito",
        "cdoId": 8
      }
    },
    {
      "changeType": "NewObject",
      "globalId": {
        "entity": "myproj.domain.entity.projeto.Requisito",
        "cdoId": 7
      }
    },
    {
      "changeType": "ObjectRemoved",
      "globalId": {
        "entity": "myproj.domain.entity.projeto.Requisito",
        "cdoId": 5
      }
    },
    {
      "changeType": "ValueChange",
      "globalId": {
        "entity": "myproj.domain.entity.projeto.Requisito",
        "cdoId": 7
      },
      "property": "descricao",
      "left": null,
      "right": "requisito 1"
    },
    {
      "changeType": "ValueChange",
      "globalId": {
        "entity": "myproj.domain.entity.projeto.Requisito",
        "cdoId": 7
      },
      "property": "id",
      "left": null,
      "right": 7
    },
    {
      "changeType": "ValueChange",
      "globalId": {
        "entity": "myproj.domain.entity.projeto.Requisito",
        "cdoId": 8
      },
      "property": "descricao",
      "left": null,
      "right": "lionel messi"
    },
    {
      "changeType": "ValueChange",
      "globalId": {
        "entity": "myproj.domain.entity.projeto.Requisito",
        "cdoId": 8
      },
      "property": "id",
      "left": null,
      "right": 8
    },
    {
      "changeType": "ValueChange",
      "globalId": {
        "entity": "myproj.domain.entity.projeto.dto.ProjetoDTO",
        "cdoId": 2
      },
      "property": "avisoComplexidade",
      "left": true,
      "right": false
    },
    {
      "changeType": "ListChange",
      "globalId": {
        "entity": "myproj.domain.entity.projeto.dto.ProjetoDTO",
        "cdoId": 2
      },
      "property": "requisitosList",
      "elementChanges": [
        {
          "elementChangeType": "ElementValueChange",
          "index": 0,
          "leftValue": {
            "entity": "myproj.domain.entity.projeto.Requisito",
            "cdoId": 5
          },
          "rightValue": {
            "entity": "myproj.domain.entity.projeto.Requisito",
            "cdoId": 8
          }
        },
        {
          "elementChangeType": "ValueAdded",
          "index": 1,
          "value": {
            "entity": "myproj.domain.entity.projeto.Requisito",
            "cdoId": 7
          }
        }
      ]
    },
    {
      "changeType": "ValueChange",
      "globalId": {
        "entity": "myproj.domain.entity.projeto.Risco",
        "cdoId": 6
      },
      "property": "fatorPriorizacao",
      "left": 0.10,
      "right": 0.100000000000000006
    },
    {
      "changeType": "ValueChange",
      "globalId": {
        "entity": "myproj.domain.entity.usuario.Usuario",
        "cdoId": 1
      },
      "property": "ultimoAcesso",
      "left": "2018-08-29T14:50:28.837",
      "right": "2018-09-05T14:35:29.928"
    }
  ]
}

Еще одна ОГРОМНАЯ проблема заключается в том, что я не вижу пути, к которому были прикреплены объекты ... Допустим, у меня есть пользователь, прикрепленный к моему графику в "projetoDTO.masterUser", а другой - в "projetoDTO.requisito". userThatManagesIt ": если произойдет изменение, я никогда не узнаю, где пользователь был / был только что пользователь был изменен. Какие-нибудь проблемы? Ty

Редактировать

Другое дело, что я знаю, что объект был удален ... и это все! Используя Long как @Id, я не могу знать, что было удалено, так как «1» не имеет отношения к пользователю. Есть идеи? Может быть, withDeletedObjects (true), как для новых объектов, доступен?

...