首页 > 解决方案 > Spring Boot JPA 多对多关系。得到意想不到的回应

问题描述

我有两个实体用户和组,两个实体之间的关系是多对多的。当我打电话view-group/groupName时,我得到了预期的组用户列表。但是当我打电话时view-user/userEmail,我没有得到包含用户所属用户详细信息的组列表。

组.java

@Entity
@Table(name = "group_")
public class Group {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NotBlank
    private String groupName;

    @ManyToMany
    @JoinTable(name = "group_user", 
              joinColumns = { @JoinColumn(name = "group_id") }, 
              inverseJoinColumns = {@JoinColumn(name = "user_id") })
    public Set<User> usersOfgroup = new HashSet<>();

    public Group() {

    } 
}

用户.java

@Entity
@Table(name="users")
public class User {
  
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @NotBlank
    @Column(name="name")
    private String name;
    
    @NotBlank
    @Column(name="email")
    private String email;
            
    @JsonIgnore
    @ManyToMany(mappedBy = "usersOfgroup")
    public Set<Group> memberInGroups =new HashSet<>();
    
    public User() {
        
    }

本地主机:8080/view-group/groupName

{
    "id": 1,
    "groupName": "Group1",
    "usersOfgroup": [
        {
            "id": 2,
            "name": "Abhishek",
            "email": "Abhishek@abc.com",
        }
    ]
}

本地主机:8080/view-user/Abhishek@abc.com

{
    "id": 2,
    "name": "Abhishek",
    "email": "Abhishek@abc.com",
}

预期响应:

{
    "id": 2,
    "name": "Abhishek",
    "email": "Abhishek@abc.com",
    "memberInGroups":[
          {
            "id": 1,
            "groupName": "Group1",
         }
       ]
}

标签: javaspring

解决方案


您已添加@JsonIgnorepublic Set<Group> memberInGroups =new HashSet<>();这就是 json 响应没有此数据的原因。删除注释,您将看到预期的响应

@JsonIgnore注解用于忽略序列化和反序列化中使用的逻辑属性。


推荐阅读