我在我的實體中具有雙向多對多關係。看下面的例子:雙向多對多關係中的循環引用
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」:反向引用類型(java.util.Set中)不 與管理型(foo.Collaboration)兼容
其實,我知道,這是有道理的,因爲javadoc的明確規定您無法在集合上使用@JsonBackReference。我的問題是,我應該如何解決這個問題?我現在所做的是刪除父側的@JsonManagedReference註釋,並在子端添加@JsonIgnore。有人能告訴我這種方法的副作用是什麼?還有其他建議嗎?
可以使用傑克遜2.0。見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