我已经在数据库实体之间建立了多对多关系。
在我的模型中,有校友、科目和科目\校友:
@Entity
public class Alumns {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@OneToMany(mappedBy = "alumn")
private List<Subjects_alumns> subjects;
.......
@Entity
public class Subjects {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@OneToMany(mappedBy = "subject")
private List<Subjects_alumns> alumns;
..........
@Entity
public class Subjects_alumns {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@ManyToOne
@JoinColumn(name = "id_subject")
private Subjects subject;
@ManyToOne
@JoinColumn(name = "id_alumn")
private Alumns alumn;
............
所以现在。。。在主题库上,我想建立一个方法,可以从给定的列表中检索每个没有主题成员的主题。
Something like this:
public interface SubjectsRepository extends CrudRepository<Subjects, Integer>{
List<Subjects> findByAlumnsNotIn(List<Subjects_alumns> someAlumns);
}
因此,在我的控制器上,我可以通过给定的校友已经关联的主题来过滤我的主题,如下所示:
@GetMapping("enroll")
public String enroll(@RequestParam(name = "id", required = true) Integer id, Model model) {
//Get the alumn to enroll
Alumns alumn = alumns.findOne(id);
model.addAttribute("alumn", alumn);
//Filter those subjects where is not enrolled already
model.addAttribute("subjects", subjects.findByAlumnsNotIn(alumn.getSubjects()));
return "enroll";
}
这个想法对我来说非常简单,并且这个代码不会产生任何异常。除了findalumnsnotin()返回一个空列表外,其他都可以正常工作。所以我想知道我的代码或整个方法是否有问题。
有人能帮我吗?这是在spring上实现多对多关系的正确方法还是有更好的方法(我是java和spring的初学者)
暂无答案!
目前还没有任何答案,快来回答吧!