私はMappingJacksonHttpMessageConverterを通じてHibernate/Spring MVCでjackson 1.9.2を使用しています。ジャクソンは双方向の1対多の関係で混乱しています
ジャクソンは双方向の一対多の関係をシリアル化できず、無限ループになります。
私が使用しているクラスは次のとおりです。SMSインスタンスのセットを持っている
会話。
各SMSインスタンスはの電話番号
のセットがあり、それぞれのPhoneNumberは私がやろうとしていますどのような親の接触(これは双方向の多対1の関係である)
をされています会話をシリアライズする。
私は@JsonManagedReferenceと@JsonBackReferenceを使用しない場合は、ジャクソンが原因無限ループにcrasheます。しかし、私がそれらを使用すると、の連絡先は、PhoneNumberにシリアル化されていません。電話番号。
Class Contact { @JsonManagedReference List<PhoneNumber> phoneNumber ; } Class PhoneNumber { @JsonBackReference Contact contact; }
出力である:
{ <--------------------- Conversation "id": 51, "smsSet": [ { "id": 53, "origin":, "destination": "06533844XY", "message": "Hello world!", "phoneNumbers": [ { "id": 64, "num": "06533844XY", "creationDate": 1333992533000, } ], } ], "creationDate": 1333992534000 }
代わりの最初の解決策として
{ <---------- conversation "id": 51, "smsSet": [ { "id": 53, "origin":, "destination": "06533844XY", "message": "Hello world!", "phoneNumbers": [ { "id": 64, "num": "06533844XY", "creationDate": 1333992533000, "contact": <--------------------- Missing part { "id": 12, "name": "Samuel Jackson", "primaryNumber": "06533844XY" } } ], } ], "creationDate": 1333992534000 }
私はGenericバージョンを使用していましたが、stackoverflowエディタが<を飲み込んでいます。私は、@JsonBackReferenceが最初にシリアル化されていることが起こっていると思います。 – redochka
ああ。はい、その可能性が高いです。それ以外の場合はエラーが異なります。 – StaxMan