Spring Data Jpa Swagger -系统.js:461范围错误:超出最大调用堆栈大小-使用@ManyToMany关系

xt0899hw  于 2023-02-16  发布在  Spring
关注(0)|答案(1)|浏览(145)

春狐 Swagger :我的JPA模型类中有@ManyToMany关系,但是当启动分页端点时出现以下错误。

system.js:461 RangeError: Maximum call stack size exceeded
    at Ct (immutable.js:2494)
    at immutable.js:2408
    at ft.Be.withMutations (immutable.js:1353)
    at immutable.js:2405
    at ft.set (immutable.js:2096)
    at It (immutable.js:2780)
    at Mt.set (immutable.js:2686)
    at immutable.js:2651
    at te.__iterate (immutable.js:418)
    at te.forEach (immutable.js:4381)

我在用

<springfox-swagger-version>2.9.2</springfox-swagger-version>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>${springfox-swagger-version}</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>${springfox-swagger-version}</version>
    <exclusions>
        <exclusion>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-models</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-models</artifactId>
    <version>1.5.21</version>
</dependency>

thigvfpy

thigvfpy1#

我遇到过一个类似的表之间关系的错误,因为我有一个POST API它从一个Model类而不是它的DTO获取一些输入。
会有什么影响呢,

  • 我们在同一个Model类中有关系参数/成员变量
  • 由于这个原因,有时候子模型类可能会调用另一个类,而那个类又会调用某个父类。
  • 最终将递归调用
  • 这就是为什么这个错误主要发生在我的情况下Ex.

用户类--〉Map到UserInfo --〉Address --〉包含用户ID的地址作为Map。因此用户类被无限次调用。
解决方案可以是:

  • 将请求/响应更改为不包含任何Map的纯DTO类(双向)
  • 仅包含最少的子DTO
  • 如果需要,必须正确使用@JsonBackReference或@JsonManagedReference的正确注解

相关问题