为什么在Springboot响应中,一些存在于不同关系中的相等值被截断?

Why are some equal values ​that are present in different relationship are truncated in Springboot response?

提问人:N7ghtm4r3 提问时间:11/12/2023 最后编辑:N7ghtm4r3 更新时间:11/13/2023 访问量:43

问:

我在这两个实体之间有一个@ManyToMany关系:

@Entity
@JsonIdentityInfo(
        generator = ObjectIdGenerators.PropertyGenerator.class,
        property = "id")
public class Group {

    @ManyToMany(mappedBy = "groups")
    private final List<Project> projects;

}

@Entity
public class Project {

    @ManyToMany
    @JoinTable(
            name = "projects_groups",
            joinColumns = {@JoinColumn(name = "project_id")},
            inverseJoinColumns = {@JoinColumn(name = "group_id")}
    )
    private final List<Group> groups;

}

当我得到响应时,数据以这种方式显示:

当我获取项目列表时

不同组中的相同组 ID

[
    {
        "id": "**0651465d52684039b9aed91f4098bb07**", // different project id
        "groups": [
            {
                "id": "**977e779c44ed4ec78e14944ad800cc55**", // same group id
                "name": "**data**",
                "author": "**data**",
                "description": "**data**",
                "members": "**data**"
            }
        ]
    },
    {
        "id": "**175b39d6392c405b86efee9d43057f6d**" // different project id
        "groups": [
            "**977e779c44ed4ec78e14944ad800cc55**" // same group id
        ]
    }
]

当我获取组列表时

不同组中的相同项目 ID

[
    {
        "id": "5fe7ead781f7459d83d8c118c812f898", // different group id
        "projects": [
            {
                "id": "**0651465d52684039b9aed91f4098bb07**", // same project id
                "name": ""**data**"",
                "author": ""**data**"",
                "shortDescription": ""**data**"",
                "description": ""**data**"",
                "version": ""**data**"",
                "updates": ""**data**"",
                "projectRepo": ""**data**""
            }
        ],
    },
    {
        "id": "977e779c44ed4ec78e14944ad800cc55", // different group id
        "projects": [
            {
                "id": "**0651465d52684039b9aed91f4098bb07**", // same project id
                "name": ""**data**"",
                "author": ""**data**"",
                "shortDescription": ""**data**"",
                "description": ""**data**"",
                "version": ""**data**"",
                "updates": ""**data**"",
                "projectRepo": ""**data**""
            }
        ],
    }
]

因此,当我请求组列表时,项目的重复值显示正确,但是当我请求项目列表时,组的重复值显示为第一个条目,即组的总内容,但其他条目仅显示组的 id。 我该如何解决这个问题?

java mysql spring-boot spring-data-jpa 对多

评论


答:

0赞 N7ghtm4r3 11/13/2023 #1

解决方案是删除

@JsonIdentityInfo(
     generator = ObjectIdGenerators.PropertyGenerator.class,
     property = "id"
)

从 Group 类中正确显示数据