当前位置: 首页 > 知识库问答 >
问题:

Spring关于我的项目中的findAll()函数错误

毕瀚
2023-03-14

我的项目中基本上有用户和角色实体。

@Entity
@Table(name="`User`")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    private String username;
    private String password;
    @ManyToMany(fetch = EAGER)
    private Collection<Role> roles = new ArrayList<>();
}

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Role {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    @ManyToMany(mappedBy = "roles")
    private List<User> users= new ArrayList<User>();

}

这是我的控制器课程

java prettyprint-override">@RestController
@RequestMapping("/api")
@RequiredArgsConstructor
public class UserResource {
    private final UserService userService;

     @GetMapping("/users")
    public ResponseEntity<List<User>> getUsers(){

        return ResponseEntity.ok().body(userService.getUsers());
    }

这是我的UserManager课程

@Service @RequiredArgsConstructor @Transactional @Slf4j
public class UserManager implements UserService {
    private final UserRepo userRepo;
    private final RoleRepo roleRepo;

     @Override
    public List<User> getUsers() {
        log.info("Fetching all users {}" );
        return userRepo.findAll() ;
    }
}

当我请求http://localhost:8080/api/users时,我得到了这样的错误数据

[{"id":5,"name":"Emirhan Ay","username":"emrhn1888","password":"1234","roles":[{"id":1,"name":"ROLE_USER","users":[{"id":5,"name":"Emirhan Ay","username":"emrhn1888","password":"1234","roles":[{"id":1,"name":"ROLE_USER","users":[{"id":5,"name":"Emirhan Ay","username":"emrhn1888","password":"1234","roles":[{"id":1,"name":"ROLE_USER","users":[{"id":5,"name":"Emirhan Ay","username":"emrhn1888","password":"1234","roles":[{"id"}]}]}]}]

我的错在哪里?提前感谢您的回答。

共有1个答案

黄博艺
2023-03-14

您有循环依赖关系。用户有角色,角色有用户,等等。您可能应该首先将实体映射到DTOS,然后添加@JsonManaged引用@JsonBack引用

或者你可以简单地把@JsonIgnore放在私有列表中

 类似资料:
  • pom。xml 我在Eclipse中使用Spring、jsp、servlet制作Web项目。但是Spring核心依赖会带来麻烦。 在xsi中:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" 错误消息很长。。。我不知道。。 无法从传输公用日志:公用日志:jar:1.

  • 必备工具 没有金刚钻,不揽瓷器活。趁手的兵器往往让你事半功倍。为了更好地参与翻译计划,你最好能够熟练使用Sphinx和Subversion(SVN)。如果二者都不熟悉,那么也可以将无格式的译文文稿通过邮件发送给我。 Subversion 用于进行版本控制。如果你是Linux用户,那么命令行版本就挺好。如果你是Windows用户,那么推荐使用TortoiseSVN。 在使用SVN进行提交时,为了能够

  • 在大多数情况下,项目是您为一个网站编写的一个脚本。 项目是独立的,但您可以将另一个项目作为模块导入 from projects import other_project 一期工程有5个状态:TODO,STOP,CHECKING,DEBUG和RUNNING TODO - 创建一个脚本来编写 STOP- 您可以将项目标记为STOP您希望它停止(= =)。 CHECKING- 修改正在运行的项目时,为防

  • 我刚刚学会了spring和hibernate,当我锻炼的时候,我有一些错误,如下所示: 这是我的hibernate.xml 这是我的pom.xml 我已经试图解决这个错误,但还没有修复它,那么有人能帮我吗?

  • 这些天我正在构建一个简单的spring-boot项目。 当我执行程序时,我发现代码中有一些我无法纠正的错误。由于我是这方面的初学者,请帮我纠正所有这些错误。 控制台输出: 程序。 < code > application . properties 文件的代码段:

  • findbugs报告这些关于我的项目代码的bug。 代码: 为什么它说我的EJB应该是可序列化的?我以前从未遇到过这样的建议。 和 通过返回对可变对象代码的引用,可以公开内部表示: 我需要在jsf页面中显示数组。那么为什么工具报告这是一个问题呢。 和 通过合并对可变对象的引用,set更正答案可能会暴露内部表示 和 它说我应该使用而不是。为什么?