从连接表spring boot中删除值

从连接表spring boot中删除值,spring,hibernate,spring-boot,jpa,Spring,Hibernate,Spring Boot,Jpa,我有两张桌子,学生和科目。学生可以有多个科目,反之亦然。我有两个模型类,在spring boot和JPA中使用多对多关系连接vave。我的问题是如何从连接表中删除值。但我不知道如何从联接表中删除。对于学生和主题模型,我使用deleteById()函数轻松删除。这是我的代码: @ManyToMany @JoinTable( name = "student_subject", joinColumns = @JoinCo

我有两张桌子,学生和科目。学生可以有多个科目,反之亦然。我有两个模型类,在spring boot和JPA中使用多对多关系连接vave。我的问题是如何从连接表中删除值。但我不知道如何从联接表中删除。对于学生和主题模型,我使用deleteById()函数轻松删除。这是我的代码:

          @ManyToMany
          @JoinTable(
          name = "student_subject", 
          joinColumns = @JoinColumn(name = "student_id"), 
          inverseJoinColumns = @JoinColumn(name = "subject_id"))
          private Set<SubjectModel> subjects;
@manytomy
@可接合(
name=“学生\科目”,
joinColumns=@JoinColumn(name=“student\u id”),
inverseJoinColumns=@JoinColumn(name=“subject\u id”))
私人设置科目;
//和我的存储库类

          @Repository
          public interface SubjectDao extends JpaRepository<SubjectModel, Integer> {}
@存储库
公共接口主体DAO扩展了JpaRepository{}

您必须删除链接两侧的相应对象,然后保存它们

myStudent.getSubjects().remove(mySubject);
mySubject.getStudents().remove(myStudent);
SubjectDao subjectDao = new SubjectDao();
subjectDao.save(mySubject);

这里还有一个例子:

你有两张桌子,学生和科目。 我想你想从一个学生身上删除一个科目。 为此,您应该让jpa从科目和学生科目关联表中删除该行。并且不需要使用SubjectRepository。 看一看

Student firstStudent=studentRepository.findById(1);
Set<SubjectModel> subs=firstStudent.getSubject();
subs.clear();
firstStudent.setSubject(subs);

studentRepository.save(firstStudent);  // this method will delete the row from assiciation table as well as the subject table.
Student firstStudent=studentRepository.findById(1);
Set subs=firstststudent.getSubject();
subs.clear();
第一名学生。设置科目(子科目);
studentRepository.save(第一个学生);//此方法将从分类表以及主题表中删除该行。