无法在 jackson 中为复合键处理 managed/back 引用 'defaultreference'
Can not handle managed/back reference 'defaultreference' in jackson for composite key
最近我遇到了这个错误,
can not handle managed/back reference 'defaultreference' in jackson for composite key
我在谷歌上搜索了很多,但找到了下面的选项,
JsonManagedReference and JsonBackReference
但是我的情况是,
Class Parent{
private int id;
@JsonManagedReference
Set<Child> childSet;
}
Class Child{
private ChildId childId;
private String name;
}
Class ChildId{
private int childKey;
@JsonBackReference
private Parent parent;
}
如您所见,在子 class 中它有一个复合键。我无法更改它,因为它与 DB 有关系。
谁能帮我解决这个问题?
注意:
我正在使用杰克逊 2.4.3
我正在使用 Javers 1.2.9 进行对象比较
更新 1:
根据建议,我删除了 JsonManaged 和 JsonBack 引用注释,并将 JsonIgnore 添加到 childId Class 中的 Parent 属性。
但是我在使用 Javers 时遇到了以下错误,
JaVers runtime error - diff for Set of ValueObjects is not supported
在将 JSON 反序列化为 Java 对象时,您是否看到此异常?
如果是,我使用的解决方法是 -
1. 从实体中删除@JsonManagedReference 和@JsonBackReference。
2. @JsonIgnore Parent 引用(例如,在您的 ChildId class 中)。因此 ChildId 中的父引用在序列化时为空。
3. 要反序列化,将两个单独的实体(子实体和父实体)发送回服务。一旦两个对象都可用,我将 Parent 设置回 ChildId class,这有助于满足循环引用。
问题已解决。
最奇怪的解决方法.. ;)
已在父级中删除 @JsonManagedReference
。
在 Child 的 Id 对象中的 Parent 对象中添加 @JsonBackReference
。
例如:
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;
}
最近我遇到了这个错误,
can not handle managed/back reference 'defaultreference' in jackson for composite key
我在谷歌上搜索了很多,但找到了下面的选项,
JsonManagedReference and JsonBackReference
但是我的情况是,
Class Parent{
private int id;
@JsonManagedReference
Set<Child> childSet;
}
Class Child{
private ChildId childId;
private String name;
}
Class ChildId{
private int childKey;
@JsonBackReference
private Parent parent;
}
如您所见,在子 class 中它有一个复合键。我无法更改它,因为它与 DB 有关系。
谁能帮我解决这个问题?
注意: 我正在使用杰克逊 2.4.3 我正在使用 Javers 1.2.9 进行对象比较
更新 1:
根据建议,我删除了 JsonManaged 和 JsonBack 引用注释,并将 JsonIgnore 添加到 childId Class 中的 Parent 属性。 但是我在使用 Javers 时遇到了以下错误,
JaVers runtime error - diff for Set of ValueObjects is not supported
在将 JSON 反序列化为 Java 对象时,您是否看到此异常?
如果是,我使用的解决方法是 - 1. 从实体中删除@JsonManagedReference 和@JsonBackReference。 2. @JsonIgnore Parent 引用(例如,在您的 ChildId class 中)。因此 ChildId 中的父引用在序列化时为空。 3. 要反序列化,将两个单独的实体(子实体和父实体)发送回服务。一旦两个对象都可用,我将 Parent 设置回 ChildId class,这有助于满足循环引用。
问题已解决。 最奇怪的解决方法.. ;)
已在父级中删除 @JsonManagedReference
。
在 Child 的 Id 对象中的 Parent 对象中添加 @JsonBackReference
。
例如:
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;
}