J'ai deux classes, comme indiqué ci-dessous dans un bi-directionnel plusieurs à plusieurs:Perdre les données de l'enfant dans une relation bidirectionnelle lors de l'utilisation jacksonMapper
Parent implements Serializable{
@ManytoMany(//declaration for join table)
@JsonBackReference
@com.fasterxml.jackson.annotation.JsonIgnore
Set <Child> childSet;
}
Child implements Serializable{
@ManytoMany(//declaration for join table)
@JsonManagedReference
@com.fasterxml.jackson.annotation.JsonIgnore
Set <Parent> parentSet;
// other getter and setters
}
Je fais un appel dans mon DAO pour obtenir un parent particulier. Avec les détails parentaux, je veux aller chercher les enfants du parent. Quelque chose comme ceci:
Hibernate.initialize(parent.getChildSet()); //this works perfectly
// and I get the details of parent along with the children in my DAO call.
Mais quand je fais le bas dans mon service d'affaires en retournant les données au contrôleur les enfants sont omis de la chaîne JSON mère.
jacksonMapper.writeValueAsString(parent);
donc je l'ai enlevé la @JsonIgnore sur l'attribut de l'enfant à l'intérieur de la pensée classe parent qui jackson peut comprendre que ces champs ne doivent pas être ignorés lors de l'écriture à une chaîne comme indiqué ci-dessous. Mais il les ignore encore! :(
Parent implements Serializable{
@ManytoMany(//declaration for join table)
@JsonBackReference
//@com.fasterxml.jackson.annotation.JsonIgnore
Set <Child> childSet;
}
Toute idée où je pourrais aller mal
?
Pourriez-vous également ajouter votre requête db? – k1133
@ k1133 le côté db J'utilise hibernate et c'est une requête select all sur FoodItem. Je veux que les catégories viennent aussi avec foodItem. Mais en utilisant jacksonMapper les catégories sont omises dans la chaîne json retournée. – dirai
J'ai supprimé l'attribut @JsonIgnore on Child dans la classe Parent en pensant que jackson pourrait comprendre que ces champs ne doivent pas être ignorés lors de l'écriture dans une chaîne. Mais il les ignore encore!:( – dirai