我有一个名为User的实体,它有两个多对多关系: User -mtm - Role 和 User -mtm - Course
public class User {
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "users_roles",
joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "role_id", referencedColumnName = "id")})
private List<Role> userRoles;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "users_courses",
joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "course_id", referencedColumnName = "id")})
private List<Course> orderedCourses;
}
在课程实体中:
public class Course {
@ManyToMany(mappedBy = "orderedCourses")
private List<User> participants;
}
它在 Role
实体中看起来很相似 .
当用户使用例如分配的两个角色将自己注册到某个课程(意味着课程被添加到他的 orderedCourses
列表中),他获得了两次这门课程 . 因此,具有两个角色的用户两次注册相同的课程,具有3个角色的用户获得三次等 .
它在数据库的联结表中很明显 . (一个用户有几次相同的课程是不可接受的) .
看起来一个 ManyToMany
关系会对另一个人产生影响 . 但我不知道出了什么问题 . 一切都由Hibernate持久保存到MySQL数据库(通过Spring Data JPA)