Я использую jackson 1.9.2 с Hibernate/Spring MVC через MappingJacksonHttpMessageConverter.
Джексон не может сериализовать двунаправленное отношение «один-ко-множеству» и создает бесконечный цикл.
Я использую следующие классы::
Conversation с набором экземпляров SMS.
Каждый экземпляр SMS имеет набор телефонных номеров
Каждый телефонный номер имеет родительский контакт (это двунаправленное отношение многие-к-одному)
Я пытаюсь сериализовать беседа.
Если я не использую @JsonManagedReference и @JsonBackReference , тогда jackson вылетит из-за бесконечного цикла. Но когда я их использую,Contactне сериализуется вPhoneNumber.
Class Contact { @JsonManagedReference List<PhoneNumber> phoneNumber ; } Class PhoneNumber { @JsonBackReference Contact contact; }
Результатом является:
{ <--------------------- Conversation "id": 51, "smsSet": [ { "id": 53, "origin": 0123465, "destination": "06533844XY", "message": "Hello world!", "phoneNumbers": [ { "id": 64, "num": "06533844XY", "creationDate": 1333992533000, } ], } ], "creationDate": 1333992534000 }
вместо
{ <---------- conversation "id": 51, "smsSet": [ { "id": 53, "origin": 0123465, "destination": "06533844XY", "message": "Hello world!", "phoneNumbers": [ { "id": 64, "num": "06533844XY", "creationDate": 1333992533000, "contact": <--------------------- Missing part { "id": 12, "name": "Samuel Jackson", "primaryNumber": "06533844XY" } } ], } ], "creationDate": 1333992534000 }