I can not find the way to insert data using ManyToMany in spring boot. Can anyone please suggest me how to save data using M-To-M in spring boot and hibernate.
Here down is my code.
Entity
@Entity
@Table(name = "user_master")
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer user_id;
private String name;
@JsonManagedReference
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "users_roles", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = {
@JoinColumn(name = "role_id") })
private Set<Roles> roles;
// constructor and getter/setter
}
@Entity
@Table(name = "role_master")
public class Roles {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer role_id;
private String name;
@JsonBackReference
@ManyToMany(cascade = CascadeType.ALL, mappedBy = "roles")
private Set<Users> users;
// constructor and getter/setter
}
service
@Override
public Users addAddressPerson(Set<Users> users) {
for(Roles roles: users.getRoles()) // Error: The method getRoles() is undefined for the type List<Users>
{
roles.setUsers(users); // Error: The method setUsers(Set<Users>) in the type Roles is not applicable for the arguments (Users)
}
return UserRepo.save(users);
}
CodePudding user response:
try
@Override
public List<Users> addAddressPerson(List<Users> users) {
for(User user: users) {
for(Roles roles: user.getRoles()) {
roles.getUsers().add(user);
}
}
return users.stream().map(UserRepo::save).collect(Collectors.toList());
}
