Использование @JsonIdentityInfo создает один не связанный идентификатор - PullRequest
0 голосов
/ 23 октября 2018

Чтобы предотвратить бесконечную рекурсию во время сериализации объекта Джексоном, я использую аннотацию @ JsonIdentityInfo.

Эта особенность отличается тем, что содержит как ссылки на родительскую, так и дочернюю сущность того же самого типа.

@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "id")
@Entity
@Table(name = "place")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Place extends Thing implements Serializable {

    ...

    @OneToMany(mappedBy = "containedInPlace", fetch = FetchType.EAGER)
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    private Set<Place> containsPlaces = new HashSet<>();

    @ManyToOne
    private Place containedInPlace;
}

В результате получается JSON, содержащий все элементы, но некоторые из них преобразуются в уникальный идентификатор, теряя всю свою информацию.

[  
   {  
      "id":1003,
      "name": "AAA",
      "containsPlaces":[  

      ],
      "containedInPlace":{  
         "id":1001,
         "name": "BBB",
         "containsPlaces":[  
            1,
            {  
               "id":1004,
               "name": "CCC",
               "containsPlaces":[  

               ],
               "containedInPlace":2
            },
            {  
               "id":1005,
               "name": "DDD",
               "containsPlaces":[  

               ],
               "containedInPlace":2
            },
            {  
               "id":1006,
               "name": "EEE",
               "containsPlaces":[  

               ],
               "containedInPlace":2
            },
            {  
               "id":1007,
               "name": "FFF",
               "containsPlaces":[  

               ],
               "containedInPlace":2
            }
         ],
         "containedInPlace":null,
      }
   },
   3,
   4,
   5,
   6
]

Есть ли способ получить полноеобъект вместо идентификатора?Существуют ли другие способы получения полной сериализации родительских и дочерних элементов одного объекта без попадания в бесконечный цикл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...