I want to persist my entity with ManyToMany relation. But i have some problem during persisting process.
My entities :
@Entity
@Table(name = \"USER\"
Duplication Reason: Id is autogenerated, so every time a new role is being created. Use in this way :
User
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int user_Id;
@Column(name = "email")
private String email;
@Column(name = "firstname")
private String firstname;
@Column(name = "lastname")
private String lastname;
@Column(name = "password")
private String password;
@Column(name = "active")
private int active;
@ManyToMany(cascade = CascadeType.MERGE, fetch = FetchType.EAGER)
@JoinTable(name="user_role",
joinColumns=@JoinColumn(name="user_Id"),
inverseJoinColumns=@JoinColumn(name="role_Id"))
private Set roles = new HashSet<>();
//Getter and Setter
Role
@Entity
@Table(name="roles")
public class Role {
@Id
@Column(name="role_Id")
private int role_Id;
@Column(name="role_name")
private String role_name;
@ManyToMany(mappedBy = "roles")
private Set users= new HashSet<>();
Controller (Should have added it to Service)
@PutMapping("/addEmp")
public String addEmp(@RequestBody User user) {
String pass=passencoder.encode(user.getPassword());
user.setPassword(pass);
List roles =rolerepo.findAll();
for(Role role: roles)
System.out.println("Roles"+ role.getRole_name());
//user.setRoles(new HashSet < > (rolerepo.findAll()));
userrepo.save(user);
return "User Created";
}
Output
Roles
User_Role
If you liked the answer please subscribeYoutube Channel Atquil