Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧外键无限循环_Java_Mysql_Spring - Fatal编程技术网

Java 弹簧外键无限循环

Java 弹簧外键无限循环,java,mysql,spring,Java,Mysql,Spring,我有一个表用户,它有一个外键存储来引用该用户的存储 其次,我有一个表存储,它有一个外键,实际上是一个用户Id 在我的Spring应用程序中,我创建了映射对象关系,并使用@ManyTOone为我的用户类中的Store和我的Store类中的User创建了一个类模型 我创建了存储库和一个REstController 当我在我的UserRepository中尝试一个findOne方法时,我有一个无限循环,因为它正在加载用户中的存储,用户在存储中,存储在用户中,等等 避免这种情况的最佳做法是什么 谢谢如果

我有一个表用户,它有一个外键存储来引用该用户的存储

其次,我有一个表存储,它有一个外键,实际上是一个用户Id

在我的
Spring
应用程序中,我创建了映射对象关系,并使用
@ManyTOone
为我的用户类中的Store和我的Store类中的User创建了一个类模型

我创建了存储库和一个
REstController

当我在我的UserRepository中尝试一个
findOne
方法时,我有一个无限循环,因为它正在加载用户中的存储,用户在存储中,存储在用户中,等等

避免这种情况的最佳做法是什么


谢谢

如果您直接渲染它,您必须使用注释设置一个与托管引用的关系

@JsonManagedReference,例如在您的OneToMany声明中

@@ManyToOne声明上的JsonBackReference注释

如果你不这样做,你会遇到这个无限循环

还有其他的可能性看看这个:

我希望这将对您有所帮助。

查看您的属性:
@ManyToOne(fetch=FetchType.LAZY)
。如果两个实体中都有
@manytone
@OneToMany
注释,则其中一个实体应使用延迟获取类型以避免无限循环。例如:

@Entity(name = "ATTRIBUTE")
public class Attribute {
    ...
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "CONFIG_ID")
    private Config config;
    ...
}

@Entity(name = "CONFIG")
public class Config {
    ...
    @OneToMany(mappedBy = "config", fetch = FetchType.EAGER)
    private Set<Attribute> attributes;
    ...
}
@实体(name=“ATTRIBUTE”)
公共类属性{
...
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“CONFIG\u ID”)
私有配置;
...
}
@实体(name=“CONFIG”)
公共类配置{
...
@OneToMany(mappedBy=“config”,fetch=FetchType.EAGER)
私有集属性;
...
}

请注意,默认的获取类型是eager。

这样的循环依赖不会导致无限循环。显示您的代码。您是否设法解决了问题?这些将影响实体不会传递相关的子对象。。。这不是他想做的。对于您的解决方案,您必须调用存储库两次。第一次是配置,第二次是属性,两者都要交付……是的,这是真的,但只适用于属性实体:我们必须显式地从中加载配置。但配置实体急切地加载所有相关属性。