Джексон перепутал с двунаправленным отношением -ко-множеству

Я использую 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
  }
10
задан redochka 11 April 2012 в 21:28
поделиться