最近我收到了这个错误,
无法在jackson中处理复合键的托管/后向引用'defaultreference'
我用googled很多,但找到了以下选项,
JsonManagedReference和JsonBackReference
但我的情况是,
grid
如您所见,在子类中它有一个复合键。我无法改变这一点,因为它与DB有关系。
有人可以帮我解决这个问题吗?
注意: 我正在使用Jackson 2.4.3 我正在使用Javers 1.2.9进行对象比较
UPDATE1:
根据建议,我删除了JsonManaged和JsonBack引用注释,并在childId Class中将JsonIgnore添加到Parent属性。 但我对Javers的误差低于此,
JaVers运行时错误 - 不支持Set of ValueObjects的差异
答案 0 :(得分:5)
问题已解决。 最奇怪的解决方法..;)
在Parent中删除了@JsonManagedReference
。
在Child对象中添加@JsonBackReference
,该对象位于Child的Id对象中。
例如:
Class Parent{
private int id;
Set<Child> childSet;
}
Class Child{
private ChildId childId;
private String name;
}
Class ChildId{
private int childKey;
@JsonBackReference
private Parent parent;
}
答案 1 :(得分:0)
在将JSON反序列化为Java对象时,您是否看到此异常?
如果是,我使用的解决方法是 - 1.从实体中删除@JsonManagedReference和@JsonBackReference。 2. @JsonIgnore Parent引用(例如,在您的ChildId类中)。因此,ChildId中的父引用在序列化时为null。 3.要反序列化,请将两个单独的实体(Child和Parent)发送回服务。一旦两个对象都可用,我将Parent设置回ChildId类,这有助于满足循环引用。