内容:

我有2个Web应用程序:


前(春季MVC)
网络服务(春季休息)


两者都通过Web服务进行通信。我正在尝试从json这样在web服务webapp中生成对象(CounterDTO):


  ObjectMapper映射器=新的ObjectMapper();
  mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,
  假); CounterDTO counterDTO =
  mapper.readValue(json.get(objName).toString(),CounterDTO.class);


错误:

当我尝试使用json构建对象时,出现以下错误:


  java.lang.IllegalArgumentException:无法处理托管/返回
  引用'entreprise-agency':不是反向引用类型(java.util.Set)
  与托管类型兼容(com.mypackage.Agency)


JSON已发送:


  {“ id”:空,“代码”:“ SKYUE586”,“名称”:“名称1”}


我有3个这样的实体:

@Entity
@Table(name = "AGENCY")
public class Agency {
    ...
    @ManyToOne(optional = false)
    @JoinColumn(name = "ID_Entreprise")
    @JsonManagedReference(value = "entreprise-agency")
    private Entreprise entreprise;

    @OneToMany(mappedBy = "agency", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JsonBackReference(value = "agency-counter")
    private Set<Counter> counters = new HashSet<Counter>();
   ...
}




Entity
@Table(name = "COUNTER")
public class Counter {
    ...
    @ManyToOne(optional = false)
    @JoinColumn(name = "ID_Agence")
    // @JsonBackReference
    @JsonManagedReference(value = "agency-counter")
    private Agency agency;
    ...
}




@Entity
@Table(name = "ENTREPRISE")
public class Entreprise {
    ...
    @OneToMany(mappedBy = "entreprise", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JsonBackReference(value = "entreprise-agency")
    private Set<Agency> agencies = new HashSet<Agency>();
   ...
}


和DTO

public class CounterDTO {
    private Integer id;
    private String code;
    private String name;
    ...
}


题:

如何正确处理托管/后备杰克逊参考资料?

我也尝试在我的实体上使用此标签


  @JsonIdentityInfo(generator =
  ObjectIdGenerators.PropertyGenerator.class,属性=“ id”)


谢谢

最佳答案

我已经通过使用解决了问题

Gson library

代替ObjectMapper

08-06 05:28
查看更多