java—有没有任何方法可以在没有无限json格式的情况下使用spring从多对多表中获取数据?

bvjxkvbb  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(208)

用户实体

@Id@GeneratedValue(strategy = GenerationType.AUTO)
Integer id;
// ... more properties

@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(name = "User_Boards", joinColumns = {@JoinColumn(name = "user_id")}, inverseJoinColumns = {@JoinColumn(name = "board_id")})
Set < Board > user_board = new HashSet < >();
//getter and setter and constructors

董事会实体

@Entity
public class Board  implements Serializable{

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    int  id;
    String name;
    int P_id;
    @ManyToMany(mappedBy = "user_board" , fetch = FetchType.LAZY)
    Set<User> users_of_board = new HashSet<>();
//getter and setter and constructors

当我尝试使用findall方法获取数据时,我得到了无限的json对象。
例如,当我获取用户时,我在它里面有一组板,我有一组用户,在它里面我有一组板。。。等。
我怎样才能用用户的电路板和它的用户的电路板来获取用户?

jv4diomz

jv4diomz1#

你可以用 @JsonBackReference 在不希望获取链接对象的类中。
所以,如果我没有误解的话,一个用户有很多板,而一个板拥有一个或多个用户,那么获取一个用户就会得到一个无限的递归。
所以进入 Board 必须完成的课程:

@ManyToMany(mappedBy = "user_board" , fetch = FetchType.LAZY)
@JsonBackReference //<--- Add this
Set<User> users_of_board = new HashSet<>();

这样,物体就不会是无限的。
你也可以看看这篇文章。

相关问题