内容:
我有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