user entity
JavaScript
x
@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
board entity
JavaScript
@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
When I try to fetch data using findAll method I get infinite json object.
For example when I fetch users I have set of boards inside it I have set of users and inside it I have set of boards… etc.
How can I fetch user with his boards and boards with its users ?
Advertisement
Answer
You can use @JsonBackReference
in the class where you don’t want to get the linked object.
So, if I’ve not missunderstood, one user has many boards, and a board owns to an user or many, so fetching one user you get an infinite recursion.
So into Board
class you have to do:
JavaScript
@ManyToMany(mappedBy = "user_board" , fetch = FetchType.LAZY)
@JsonBackReference //<--- Add this
Set<User> users_of_board = new HashSet<>();
And then, the object will not be infinite.
Also you can check this article.