在我的 Spring Boot 应用程序中,我有一个与实体类(class)进行多对多关联的用户实体(一个用户可以注册多门类(class),一门类(class)可以有多个用户) 并且实体类(class)与实体类(class)一对多关联(一门类(class)有多个类(class),但一个类(class)只有一门类(class))
我正在使用 Spring Boot 来执行我的应用程序,并且我可以说用户已经注册了我必须做的类(class):
user.setCourse(course)
userRepository.save(user)
当将类(class)与用户相关时,我可以说他注册了该类(class)。但是如何将用户与类(class)相关联以了解例如他完成了哪些类(class)?我可以充分利用这种用户关系来进行很多类(class),一个类(class)用于多个类(class),或者我是否必须为多个类(class)用户创建多个关系?
这是一个实体的小示例,可以更好地说明这种关系:
@Entity
public class User{
private long id;
private String name;
private String password;
@ManyToMany(mappedBy = “enrolledUser”, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable
private List enrolledCourse;
//getters and setters
}
@Entity
public class Course{
private long id;
private String name;
private String description;
@ManyToMany(mappedBy = “enrolledCourse”, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable
private List enrolledUser;
@OnetoMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List aulas;
//getters and setters
}
@Entity
public class Class{
private long id;
private String name;
private String content;
@ManyToOne(mappedBy = “class”, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable
private Course course;
//getters and setters
}
最佳答案
这里有很多问题。首先你不能这样做:
user.setCourse(course)
userRepository.save(user)
因为我们正在讨论多对多关系。你会做这样的事情:
user.courses.add(course)
反之亦然
course.users.add(user)
然后就可以保存用户了。请按照此处的教程进行操作:
https://www.callicoder.com/hibernate-spring-boot-jpa-many-to-many-mapping-example/
并使用通用列表,如 List<Course>
而不仅仅是List
。实际上我建议使用 Set<Course>
在这种情况下。只需按照上面的教程操作即可。
您可以定义 Class
作为带有您需要的额外列的连接表。看一下这篇文章来定义这些额外的列:
关于java - 关联该实体的最佳方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49945285/