私は自分のエンティティで双方向の多対多の関係を持っています。双方向多対多関係の循環参照
public class Collaboration {
@JsonManagedReference("COLLABORATION_TAG")
private Set<Tag> tags;
}
public class Tag {
@JsonBackReference("COLLABORATION_TAG")
private Set<Collaboration> collaborations;
}
私はJSONにこれをシリアル化しようとすると、私は次の例外を取得しています:: `
は「java.lang.IllegalArgumentExceptionが:管理/バック 扱うことができない以下の例を参照してください。参照「COLLABORATION_TAG」:マネージ型(foo.Collaboration)と 互換性のないバックの参照型(java.util.Set)
javadocが明示的に述べているので実際には、私は、これは理にかなって知っています。コレクションで@JsonBackReferenceを使用することはできません。私の質問は、私はこの問題にどのように対処すべきですか?私が今行ったことは、親サイドの@JsonManagedReferenceアノテーションを削除し、子サイドに@JsonIgnoreを追加したことです。誰かがこのアプローチの副作用を教えてもらえますか?他の提案はありますか?
あなたはジャクソン2.0を使用することができますに
ようジャクソン2ライブラリで提供されます。 http://stackoverflow.com/questions/10065002/jackson-serialization-of-entities-with-birectional-relationships-avoiding-cycを参照してください。 –
「JsonIdentityInfo」アノテーションは素敵です。感謝します。@EugeneRetunsky!私はこのページがどのように動作するかを知るのに非常に有用であることを発見しました:http://wiki.fasterxml.com/JacksonFeatureObjectIdentity –
'JsonManagedReference'と' JsonBackReference'を試しました どれも動作しません。 しかし、@SimonAndréForsbergのリンクは非常に興味深く、動作します。 – yas