【发布时间】:2022-01-26 01:32:51
【问题描述】:
我正在实现用户和权限之间的多对多关系,我无法断定我哪里错了,它不起作用 (Unable to map collection rs.raf.demo.model.User.permissions):
@Data
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Long userId;
@Column
private String username;
@Column
private String password;
@ManyToMany
@JoinTable(
name = "USERS_PERMISSIONS",
joinColumns = @JoinColumn(name = "USER_ID", referencedColumnName = "ID"),
inverseJoinColumns = @JoinColumn(name = "PERMISSION_ID", referencedColumnName = "ID")
)
private List<Permission> permissions = new ArrayList<>();
}
================================================ ====================================
@Data
@Entity
public class Permission {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "permission_id")
private Long userId;
private String type;
@ManyToMany
@JoinTable(
name = "USERS_PERMISSIONS",
joinColumns = @JoinColumn(name = "PERMISSION_ID", referencedColumnName = "ID"),
inverseJoinColumns = @JoinColumn(name = "USER_ID", referencedColumnName = "ID")
)
@JsonIgnore
private List<User> users = new ArrayList<>();
}
我通过查看此示例实现了用户和权限,这是有效的(我看不出用户和权限的区别):
@Data
@Entity
@Table(name = "STUD")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String lastName;
private String firstName;
@ManyToMany
@JoinTable(
name = "STUDENTS_COURSES",
joinColumns = @JoinColumn(name = "STUDENT_ID", referencedColumnName = "ID"),
inverseJoinColumns = @JoinColumn(name = "COURSE_ID", referencedColumnName = "ID")
)
private List<Course> courses = new ArrayList<>();
}
================================================ ===================================
@Data
@Entity
public class Course {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
@ManyToMany
@JoinTable(
name = "STUDENTS_COURSES",
joinColumns = @JoinColumn(name = "COURSE_ID", referencedColumnName = "ID"),
inverseJoinColumns = @JoinColumn(name = "STUDENT_ID", referencedColumnName = "ID")
)
@JsonIgnore
private List<Student> students = new ArrayList<>();
public void addStudent(Student student) {
students.add(student);
student.getCourses().add(this);
}
public void removeStudent(Student student) {
students.remove(student);
student.getCourses().remove(this);
}
}
【问题讨论】:
标签: spring database spring-data many-to-many