2016-10-28 1 views
0

récemment avec ces deux DTO je suis arrivé cette erreurJackson: ne peut pas gérer géré/back référence 'defaultReference' avec DTO imbriqués

MappingJackson2HttpMessageConverter: 163 - Impossible d'évaluer Jackson désérialisation pour le type [type simple, classe seml.dto.PoiDto]: java.lang.IllegalArgumentException: Impossible de gérer les fichiers gérés/en arrière référence 'defaultReference': type de référence arrière (java.util.Set) non compatible avec le type géré (seml.dto.ConceptDto)

Comme vous pouvez le voir dans le code ci-dessous, j'ai un ensemble d'objets ConceptDto, qui ont respectivement certains ensembles d'objets ConceptDto élargis/étroits/apparentés. Certes, j'avais tort d'utiliser @ JsonManagedReference/@ JsonBackReference mais je ne comprends pas comment. Quelqu'un peut-il m'aider avec ce problème? Merci à tout le monde.

PoiDto.java

public class PoiDto extends GenericDto<String>{ 

    private String id; 
    private String uri; 
    private String title = ""; 
    private String description = ""; 

    @JsonManagedReference 
    private Set<ConceptDto> concepts = new HashSet<ConceptDto>(); 

    @JsonManagedReference 
    @JsonBackReference 
    private Set<PoiDto> relatedPOIs = new HashSet<PoiDto>(); 

    private Set<ProductOrServiceDto> relatedProductOrServices = new HashSet<ProductOrServiceDto>(); 
[...] 

ConceptDto.java

public class ConceptDto extends GenericDto<String> { 

    private String prefLabelIt; 
    private String prefLabelEn; 
    private String code; 
    private double rating; 


    @JsonBackReference 
    private Set<ConceptDto> broaders = new HashSet<ConceptDto>(); 

    @JsonManagedReference 
    private Set<ConceptDto> narrowers = new HashSet<ConceptDto>(); 

    @JsonIgnore 
    private Set<ConceptDto> relateds = new HashSet<ConceptDto>(); 

[...] 

Répondre

4

S'il vous plaît essayer d'abord de supprimer @JsonBackReference et @JsoonManagedReference et ajoutez cette @JsonIdentityInfo (générateur = ObjectIdGenerators.PropertyGenerator.class, propriété = "id"), J'espère que cela fonctionne avec vous parce que j'ai eu ce même problème et cela a fonctionné pour moi :)

+0

merci, vous avez sauvé mon temps ... –