2017-10-01 7 views
2

Je vais avoir un reltionShip OneToMany entre deux entités:Jackson n'a pas réussi à Désérialisation entité relation OneToMany

public class Product { 
    @JsonBackReference 
    private List<ProductDetail> listProductDetail; 

Et

public class ProductDetail { 
    @JsonManagedReference 
    private Product product; 

Je suis en train de désérialiser l'entité ProductDetail mais je suis toujours obtenir l'exception suivante:

jackson can not handle managed/back reference 'defaultreference': back reference type (java.util.list) not compatible with managed type 

J'ai essayé différents formats json (y compris le t dans le message json, supprimant ce champ) mais toujours le même résultat.

Quelqu'un peut-il s'il vous plaît me expliquer ce que fait ce moyen d'erreur et la façon de le résoudre sans modifier mes entités si possible (les entités font partie de notre composante datamodel qui est utilisé par d'autres collègues)

Merci

+0

Merci pour votre réponse rapide, Je n'ai pas utilisé cette annotation avant, pourriez-vous s'il vous plaît ajouter plus de détails comment l'ajouter et pourquoi je suis obtenir cette exception, je veux savoir pourquoi jackson jette cette erreur? Merci – Zizou

Répondre

0

vous pourriez plutôt essayer d'utiliser @JsonIdentityInfo sur les entités:

public class Product { 
    @JsonIdentityInfo 
    private List<ProductDetail> listProductDetail; 

public class ProductDetail { 
    @JsonIdentityInfo 
    private Product product; 
+0

Merci, Existe-t-il une solution sans modifier mes entités car elles sont partagées par d'autres modules? Et pouvez-vous aider s'il vous plaît pourquoi jackson lance cette exception? – Zizou

+0

@Zizou Voulez-vous dire ne même pas modifier les annotations dans les modèles/entités? – nullpointer

+0

Oui, sans modifier les annotations – Zizou