到目前为止,我还没有找到解决此问题或遇到同样问题的人:我无法提交代码,但会尝试用图解释并尽可能清楚。
A类指向抽象B.具体类C然后指向A. A和B有db生成的ID,C,D和E继承id形式B.C,D,E上的id仍然是唯一的所有这些。
很明显,在这种情况下不能使用@JsonManagedReference和@JsonBackReference,因为B是多态的。这种情况是注释的一个限制。
我试图在C中使用@JsonIdentityReference(alwaysAsId = true)(它指向A)并且它导致C只有预期的A的ID,并且没有问题序列化它,但是在反序列化时它可能会抛出着名的" 无法解析对象ID .... - 未解析的前向参考?"。
有人有解决方案,或者看到某个可能有用的示例吗?
答案 0 :(得分:0)
所以我毕竟能够解决这个问题而不是Jackson的任何帮助,但使用递归格式方法和递归removeDuplicateNodes()方法。
一旦完成格式化,就可以按照没有前向引用的方式删除重复。因此,从根节点开始,我们将执行以下操作:
发生的事情是,首先我们将所有节点扩展为完整描述而不仅仅是id。然后递归地将完整描述替换为之前在C节点上描述的任何A节点的id。
希望这有助于其他人。