问题描述
我已经在我的数据库实体之间建立了多对多的关系。
在我的模型中有 Alumns、Subjects 和 Subjects_alumns:
@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;
............
那么现在...在 Subjects 存储库中,我想建立一种方法,该方法能够从给定列表中检索每个没有 Subject_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() 返回一个空列表外,一切正常。所以我想知道我的代码或我的整个方法是否有问题。
谁能帮我解决这个问题?这是在春季启用多对多关系的正确方法还是有更好的方法? (我是java和spring的初学者)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)