我有一个名为User的实体,有两个多对多关系:用户-mtm - 角色和用户-mtm - 课程
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(通过Spring Data JPA)将所有内容保存到MySQL数据库