杰克逊:无法处理托管/后退参考'默认参考'使用嵌套的DTO

时间:2016-10-28 07:56:12

标签: java json spring-mvc jackson dto

最近这两个DTO我收到了这个错误

  

MappingJackson2HttpMessageConverter:163 - 无法评估杰克逊   类型[simple type,class seml.dto.PoiDto]的反序列化:   java.lang.IllegalArgumentException:无法处理托管/返回   reference' defaultReference':返回引用类型(java.util.Set)不   与托管类型兼容(seml.dto.ConceptDto)

正如您在下面的代码中看到的,我有一组ConceptDto对象,它们分别具有一些扩展器/缩小器/相关的ConceptDto对象集。当然我使用@JsonManagedReference / @JsonBackReference是错的,但我不明白怎么做。 有人可以帮我解决这个问题吗?谢谢大家。

PoiDto.java

pr.__property.PropertyType = {Name = "LocalizedString" FullName = "Sampo.CMS.LocalizedString"}

ConceptDto.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>();
[...]

1 个答案:

答案 0 :(得分:4)

请先尝试删除@JsonBackReference和@JsoonManagedReference并添加它     @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,property =&#34; id&#34;),我希望这适合你,因为我有同样的问题,它对我有用:)