代码之家  ›  专栏  ›  技术社区  ›  Yang Lifan

在Spring Data Mongo中保存具有循环引用的实体将失败

  •  2
  • Yang Lifan  · 技术社区  · 10 年前

    我有两个同时带有JPA注释和SpringDataMongo注释的实体。他们互相参照。喜欢 Parent 和 Child

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

    显然,这两个实体相互参照。对于JPA,它们是正常的。对于Spring Data Mongo 1.8.4,查询也是正常的,只是有一条INFO级别的消息表示检测到循环引用。

    但当我尝试保存数据时,Spring data Mongo失败了。控制台轮流输出异常。最后,这些异常使堆栈溢出。

    因此,这是否是一个问题需要解决。自从查询SpringDataMongo可以保护循环引用,但save操作不能。

    1 回复  |  直到 10 年前
        1
  •  0
  •   Christoph Strobl    10 年前

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

    请参阅有关使用的文档 references 有关将数据拆分为多个集合并引用它们或注册 custom converter 对于知道如何处理类型的类型。