Sto avendo una relazione bidirezionale da molte a molte nelle mie entità. Vedere l'esempio di seguito:Riferimenti ciclici in una relazione bidirezionale molti a molti
public class Collaboration {
@JsonManagedReference("COLLABORATION_TAG")
private Set<Tag> tags;
}
public class Tag {
@JsonBackReference("COLLABORATION_TAG")
private Set<Collaboration> collaborations;
}
Quando provo a serializzare questo per JSON, sto ottenendo la seguente eccezione: `
"java.lang.IllegalArgumentException: non può essere gestito gestito/indietro riferimento 'COLLABORATION_TAG':. tipo di riferimento all'indietro (java.util.Set) non è compatibile con tipo gestito (foo.Collaboration)
In realtà, so che questo ha un senso, perché il javadoc afferma esplicitamente che non puoi usare @JsonBackReference su Collections. La mia domanda è, come devo affrontare questo problema? Quello che ho fatto per ora è rimuovere l'annotazione @JsonManagedReference sul lato genitore e aggiungere @JsonIgnore sul lato figlio. Qualcuno potrebbe dirmi quali sono gli effetti collaterali di questo approccio? ci sono altri suggerimenti?
È possibile utilizzare Jackson 2.0. Vedi http://stackoverflow.com/questions/10065002/jackson-serialization-of-entities-with-birectional-relationships-avoiding-cyc –
L'annotazione 'JsonIdentityInfo' è adorabile, grazie a @EugeneRetunsky! Ho trovato questa pagina molto utile per imparare come funziona: http://wiki.fasterxml.com/JacksonFeatureObjectIdentity –
Ho provato 'JsonManagedReference' e' JsonBackReference' nessuno di loro funziona. Tuttavia, il collegamento dato da @ SimonAndréForsberg è molto interessante e funziona. – yas