Java JPA多个关系无限循环

Java JPA多个关系无限循环,java,jpa,many-to-many,lazy-initialization,Java,Jpa,Many To Many,Lazy Initialization,我有两个实体对象,其字段为: 操作-->{id,名称,应用程序} 应用程序-->{id、名称、操作} 正如您所看到的,这两个对象都可以包含彼此的列表,所以我像这样做 @ManyToMany(cascade={CascadeType.ALL},targetEntity=Operation.class) @LazyCollection(LazyCollectionOption.FALSE) @NotFound(action = NotFoundAction.IGNORE) @JoinTable(sc

我有两个实体对象,其字段为:

操作-->{id,名称,应用程序}

应用程序-->{id、名称、操作}

正如您所看到的,这两个对象都可以包含彼此的列表,所以我像这样做

@ManyToMany(cascade={CascadeType.ALL},targetEntity=Operation.class)
@LazyCollection(LazyCollectionOption.FALSE)
@NotFound(action = NotFoundAction.IGNORE)
@JoinTable(schema="RBMCORE",
          name="T_RBM_OPSCREENS_OPS_APPS",
          joinColumns={@JoinColumn(name="APP_ID", referencedColumnName="ID")},
          inverseJoinColumns={@JoinColumn(name="OP_ID", referencedColumnName="ID")})
二是

@ManyToMany(cascade={CascadeType.ALL},mappedBy="operations",targetEntity=Application.class)
@LazyCollection(LazyCollectionOption.FALSE)
@NotFound(action = NotFoundAction.IGNORE)
它们中的每一个都有这样的定义(关于连接列部分,反之亦然)。但当我这样做的时候,它给出了一个例外,比如

“会话不存在或已关闭”

当我将LazyInit设为false时,它进入无限循环,这并不奇怪。(Spring说问题在于对象的JSON转换,但我认为它仍然与JPA相关)


我能为这个问题做些什么?任何想法都将受到欢迎。

如果两边都有这些注释,那么映射是错误的。其中一方必须使用
mappedBy
属性。请参见示例7.24,感谢您的回复,我已经制作了一个用于获取操作的函数方法。但是现在,JSON正在进入一个无限循环,以便创建对象的JSON形式,我认为JPA关系的真正原因还没有消失。我已经编辑了这个问题,你确定这是一个无限循环吗?每个集合中有多少个实体?一个常见的错误是映射数据,这些数据无意中引入了数据库中的每个对象。或者,如果使用递归处理对象,则足以耗尽堆栈空间。如果是这样,请尝试仅使用单个关系而不是双向M:M。然后调优JSON编组。显然,你必须在某个地方打破递归性。这与JPA无关。在获取对象的JSON表单的阶段,应用程序挖掘实例,在每次挖掘中,它将尝试解析具有自身引用的对象。所以这肯定是无限循环的情况,因为在我看来是递归的。