Lat*_*thy 1 java jackson javers
最近我遇到了这个错误,
无法处理复合密钥的杰克逊中的托管/后备引用“ defaultreference”
我在Google上搜索了很多,但发现可以使用以下选项,
JsonManagedReference和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;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,在子类中,它具有复合键。我不能更改它,因为它与数据库有关系。
有人可以帮我解决这个问题吗?
注意:我使用杰克逊2.4.3我使用Javers 1.2.9进行对象比较
更新1:
根据建议,我删除了JsonManaged和JsonBack参考注释,并将JsonIgnore添加到childId类的Parent属性中。但是我发现Javers出错了,
JaVers运行时错误-不支持Set of ValueObjects的差异
问题已解决。最奇怪的解决方法.. ;;)
@JsonManagedReference在父级中删除。
@JsonBackReference在“孩子的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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6427 次 |
| 最近记录: |