I have User entity and Role entity which are generated using JPA Tools. User and Role have many-to-many relationship. I use following code to insert admin, however, no data is inserted into user_role table. Also I notice role class has @JoinTable but user class does not have it. Are there differences?
private void addAdmin() {
User admin = new User();
admin.setDisplayName("admin");
Role role1 = new Role();
role1.setRole("ROLE_SUPER_ADMIN");
Role role2 = new Role();
role2.setRole("ROLE_END_USER");
List<Role> roles = new ArrayList<Role>();
roles.add(role1);
roles.add(role2);
admin.setRoles(roles);
userRepository.save(admin);
}
Following is my User class:
@Entity
@NamedQuery(name="User.findAll", query="SELECT u FROM User u")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@Column(name="display_name")
private String displayName;
//bi-directional many-to-many association to Role
@ManyToMany(mappedBy="users")
private List<Role> roles;
}
Following is my role class:
@Entity
@NamedQuery(name="Role.findAll", query="SELECT r FROM Role r")
public class Role implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String role;
//bi-directional many-to-many association to User
@ManyToMany
@JoinTable(
name="user_role"
, joinColumns={
@JoinColumn(name="role_id")
}
, inverseJoinColumns={
@JoinColumn(name="user_id")
}
)
private List<User> users;
}