I designed a many to many relationship by using 2 OneToMany relationships as shown below:
In here,
- a user must have at least one or many roles.
- a role can be belonged no user or many users.
In this scene, is this ER diagram relations true?
And, is the Hibernate definitions also ok or any need to update?
@Entity
public class User {
// ...
@ManyToMany(cascade = CascadeType.MERGE)
@JoinTable(name = "user_role",
joinColumns = @JoinColumn(name = "user_id", nullable = false),
inverseJoinColumns = @JoinColumn(name = "role_id")
)
private Set<Role> roles = new HashSet<>();
public void addRole(Role role) {
roles.add(role);
role.getUsers().add(this);
}
public void removeRole(Role role) {
roles.remove(role);
role.getUsers().remove(this);
}
}
@Entity
public class Role {
// ...
@ManyToMany(mappedBy = "roles")
private Set<User> users = new HashSet<>();
public void addUser(User user) {
users.add(user);
user.getRoles().add(this);
}
public void removeUser(User user) {
users.remove(user);
user.getRoles().remove(this);
}
}