在 Spring 中保存与另一个实体具有循环引用的实体数据 Mongo 将失败

Save an entity which has a cyclic reference with another entity in Spring Data Mongo will be failed

我有两个带有 JPA 注释和 Spring 数据 Mongo 注释的实体。他们互相参考。喜欢 ParentChild

@Entity
@Document
class Parent {
    @OneToMany
    public Set<Child> getChildren() {
        return children;
    }
}

@Entity
class Child {
    @ManyToOne
    public Parent getParent() {
        return parent;
    }
}

很明显,这两个实体相互引用。使用 JPA,它们没问题。而用Spring数据Mongo1.8.4,查询也ok,只是有一个INFO级别的消息说检测到了循环引用。

但是当我尝试保存数据时,Spring数据Mongo失败了。控制台一圈一圈的输出异常。然后最后这些异常使计算器溢出。

所以这是否是一个问题需要解决。因为当查询 Spring 数据 Mongo 可以防止循环引用但保存操作不能。

关于循环的INFO级别消息提供了提示,可能存在无法根据类型信息处理的循环引用。由于这取决于实际使用的数据,这只是指出在映射过程中可能出现的潜在问题。

请参阅有关使用 references for information on splitting your data into multiple collections and referencing them or register a custom converter 类型的文档,了解如何处理您的类型。