无法处理杰克逊中复合密钥的托管/后备引用“ defaultreference”

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的差异

Lat*_*thy 5

问题已解决。最奇怪的解决方法.. ;;)

@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)