当前位置: 首页 > 知识库问答 >
问题:

Jackson:无法处理带有嵌套DTO的托管/反向引用'default引用'

邵和硕
2023-03-14

最近有了这两个DTO,我犯了这个错误

MappingJackson2HttpMessageConverter: 163-无法评估类型[简单类型,类seml.dto.PoiDto]的Jackson反序列化:java.lang.IllegalArgumentException:无法处理托管/反向引用'default引用':反向引用类型(java.util.设置)与托管类型(seml.dto.ConceptDto)不兼容

正如您在下面的代码中所看到的,我有一组ConceptDto对象,它们分别有一些broaders/Shorters/relateds ConceptDto对象集。当然,我使用@JsonManagedReference/@JsonBackReference是错误的,但我不明白如何使用。有人能帮我解决这个问题吗?谢谢大家。

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

概念to.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>();

[...]

共有1个答案

晋骏喆
2023-03-14

请首先尝试删除@JsonBackReference和@JsoonManagedReference,并添加这个@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class,property=“id”),我希望这对你有用,因为我遇到了同样的问题,它对我有用:)

 类似资料:
  • 问题内容: 我试图使用Spring Boot / Spring RestController后端从AngularJS前端发布到http:// localhost:9095 / translators 。 我可以执行GET,响应如下: 当我发布下面的json时,我得到了 错误 响应 发布数据: 错误: 我确保我的控制器具有正确的Mediatype批注。 经过一些研究并通过查看日志输出,我意识到这是一

  • 我想发到http://localhost:9095/translators从使用Spring boot/Spring RestController后端的AngularJS前端。 我可以做一个GET,响应如下: 当我发布下面的json时,我得到了错误响应 发布数据: 错误: 我已确保我的控制器具有正确的Mediatype注释。 经过一些研究,也通过查看日志输出,我意识到这是一条误导性的错误消息,问题

  • 我在一个类中有多个反向引用类。由于我对它们使用了,所以我得到了一个错误。我为这些类分配了注释,但仍然得到相同的错误。 错误:

  • 问题内容: 我有一个Vendor对象,可以从一个单独的“ vendor” json序列中反序列化,但是我想将此序列反序列化为一个,我只是想不出如何让Jackson合作。有小费吗? 问题答案: 您的数据存在问题,因为您的数组中有内部 包装 对象。想必你的对象被设计成手柄,,,但每次的多个对象也都包裹在一个对象与单一属性。 我假设您正在使用Jackson 数据绑定 模型。 如果是这样,那么有两件事要考

  • 问题内容: 据我了解 不应该匹配。实际上,甚至拒绝编译它,而的也是如此。模块似乎有不同的看法: 结果: 任何人都可以对此行为提供合理的解释吗? 更新资料 这种行为似乎是限制了在re模块。替代regex模块似乎可以正确处理断言中的组: 请注意,与有所不同pcre,regex它还允许可变宽度的查找: 最终,regex将被包含在标准库中,如PEP 411中所述。 问题答案: 这看起来确实像是Python

  • 当我试图将一个实体映射到多个实体时,我得到了这个错误。 ///这是我的候选人配置文件实体////////// ///这是我的体验详情实体////////////// ///这是我的角色实体////// 我得到的这个错误----------- 请帮帮我。我到处搜索,我尝试了每一个解决方案,但我也得到了这个错误。