java - Spring boot userRepository.findAll() 显示次数过多导致stackoverflow错误
问题描述
我有这段代码,但我在浏览器上的输出不是我想要的
@GetMapping(path = "/all")
public @ResponseBody List<User> getAllUsers() {
return userRepository.findAll();
}
输出:
[{"id":4,"firstName":"busayo","lastName":"amowe","email":"amoweolubusayo@gmail.com","password":"$2a$10$09kGDhlEp.Xmj0ocDjGLTO.03z.kGQKm2ZHcsNetDpH0r6m1rkVIu","roles":[{"id":1,"name":"ROLE_ADMIN","users":[{"id":4,"firstName":"busayo","lastName":"amowe","email":"amoweolubusayo@gmail.com","password":"$2a$10$09kGDhlEp.Xmj0ocDjGLTO.03z.kGQKm2ZHcsNetDpH0r6m1rkVIu","roles":[{"id":1,"name":"ROLE_ADMIN","users":[{"id":4,"firstName":"busayo","lastName":"amowe","email":"amoweolubusayo@gmail.com","password":"$2a$10$09kGDhlEp.Xmj0ocDjGLTO.03z.kGQKm2ZHcsNetDpH0r6m1rkVIu","roles":[{"id":1,"name":"ROLE_ADMIN","users":[{"id":4,"firstName":"busayo","lastName":"amowe","email":"amoweolubusayo@gmail.com","password":"$2a$10$09kGDhlEp.Xmj0ocDjGLTO.03z.kGQKm2ZHcsNetDpH0r6m1rkVIu","roles":[{"id":1,"name":"ROLE_ADMIN","users":[{"id":4,"firstName":"busayo","lastName":"amowe","email":"amoweolubusayo@gmail.com","password":"$2a$10$09kGDhlEp.Xmj0ocDjGLTO.03z.kGQKm2ZHcsNetDpH0r6m1rkVIu","roles":[{"id":1,"name":"ROLE_ADMIN","users":[{"id":4,"firstName":"busayo","lastName":"amowe","email":"amoweolubusayo@gmail.com","password":"$2a$10$09kGDhlEp.Xmj0ocDjGLTO.03z.kGQKm2ZHcsNetDpH0r6m1rkVIu","roles":[{"id":1,"name":"ROLE_ADMIN","users":[{"id":4,"firstName":"busayo","lastName":"amowe","email":"amoweolubusayo@gmail.com","password":"$2a$10$09kGDhlEp.Xmj0ocDjGLTO.03z.kGQKm2ZHcsNetDpH0r6m1rkVIu","roles":[{"id":1,"name":"ROLE_ADMIN","users":[{"id":4,"firstName":"busayo","lastName":"amowe","email":"amoweolubusayo@gmail.com","password":"$2a$10$09kGDhlEp.Xmj0ocDjGLTO.03z.kGQKm2ZHcsNetDpH0r6m1rkVIu","roles":[{"id":1,"name":"ROLE_ADMIN","users":[{"id":4,"firstName":"busayo","lastName":"amowe","email":"amoweolubusayo@gmail.com","password":"$2a$10$09kGDhlEp.Xmj0ocDjGLTO.03z.kGQKm2ZHcsNetDpH0r6m1rkVIu","roles":[{"id":1,"name":"ROLE_ADMIN","users":[{"id":4,"firstName":"busayo","lastName":"amowe","email":"amoweolubusayo@gmail.com","password":"$2a$10$09kGDhlEp.Xmj0ocDjGLTO.03z.kGQKm2ZHcsNetDpH0r6m1rkVIu","roles":[{"id":1,"name":"ROLE_ADMIN","users":[{"id":4,"firstName":"busayo","lastName":"amowe","email":"amoweolubusayo@gmail.com","password":"$2a$10$09kGDhlEp.Xmj0ocDjGLTO.03z.kGQKm2ZHcsNetDpH0r6m1rkVIu","roles":[{"id":1,"name":"ROLE_ADMIN","users":[{"id":4,"firstName":"busayo","lastName":"amowe","email":"amoweolubusayo@gmail.com","password":"$2a$10$09kGDhlEp.Xmj0ocDjGLTO.03z.kGQKm2ZHcsNetDpH0r6m1rkVIu","roles":[{"id":1,"name":"ROLE_ADMIN","users":[{"id":4,"firstName":"busayo","lastName":"amowe","email":"amoweolubusayo@gmail.com","password":"$2a$10$09kGDhlEp.Xmj0ocDjGLTO.03z.kGQKm2ZHcsNetDpH0r6m1rkVIu","roles":[{"id":1,"name":"ROLE_ADMIN","users":[{"id":4,"firstName":"busayo","lastName":"amowe","email":"amoweolubusayo@gmail.com","password":"$2a$10$09kGDhlEp.Xmj0ocDjGLTO.03z.kGQKm2ZHcsNetDpH0r6m1rkVIu","roles":[{"id":1,"name":"ROLE_ADMIN","users"
不是应该打印一次吗?它说 StackOverFlow 错误,我的 getJson 函数无法显示它。我能做些什么?
解决方案
user
您在和user role
实体之间存在循环依赖关系。
为了将您的响应返回给客户端,您List<User>
必须进行序列化。您必须告诉杰克逊如何处理循环,否则它将因堆栈溢出异常而失败。
public class User {
@JsonBackReference
public List<Role> roles;
// ...
}
public class Role {
@JsonManagedReference
public List<User> users;
// ...
}
有关双向关系的 Jackson 教程,请参阅https://www.baeldung.com/jackson-bidirectional-relationships-and-infinite-recursion
推荐阅读
- javascript - 从 AngularFireAuth 隐藏控制台中的错误
- csv - 如何在 csv 文件中将一行的两列与另一行的 6 列合并?
- r - “矢量化”具有不同参数长度的函数的最快方法
- php - 为什么 alexa amazon 不刷新 OAuth2.0 中过期的访问令牌
- machine-learning - sklearn标准化后如何取回原始值
- python - 在 Pytest 中重构测试逻辑以避免复杂的引发块
- bots - Bot检测识别字段
- r - 尝试使用 R 通过 SSL 连接到 Postgres 时由对等方重置连接
- python - Ajax 是一种安全的数据传递方式吗
- php - Symfony 5 - ManyToOne __isInitialized__: false