У меня проблема с поиском внутри 2 класса с отношением «многие ко многим» и таблицей соединений.Я хотел бы знать, как исправить мой код, а также сделать запрос URL, чтобы начать этот поиск, используя весеннюю загрузку 1.5.
1) Я хотел бы получить всех профессоров с (student.names = john и Professor.namep = Дэвид)
студент
private Long ids;
private Long names;
профессор
private Long idp;
private Long namep;
@ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.DETACH,
CascadeType.MERGE,
CascadeType.REFRESH,
CascadeType.PERSIST})
@JoinTable(name = "StudentProfessor",
joinColumns = { @JoinColumn(name = "idp") },
inverseJoinColumns = { @JoinColumn(name = "ids") })
private Set<Student> student = new HashSet<>();
На самом деле я могу только искать, чтобы получить всех профессоров с именем, соответствующим этому:
ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ
public class ProfessorSpecification implements Specification<Professor> {
private Professor filter;
public ProfessorSpecification(Product filter) {
super();
this.filter = filter;
}
public Predicate toPredicate(Root<Professor> root, CriteriaQuery<?> cq,
CriteriaBuilder cb) {
Predicate p = cb.conjunction();
if (filter.getType() != null) {
p.getExpressions()
.add(cb.equal(root.get("names"), filter.getNamep()));
}
return p;
}
}
RESTCONTROLER
@GetMapping(path = "/search/professor")
public ResponseEntity<List<Professor>> searchProfessor(Professor searchedProfessor) {
Specification<Professor> spec = new ProfessorSpecification(searchedProfessor);
List<Professor> result = repository.findAll(spec);
return ResponseEntity.ok(result);
}
Но я не знаю, как сделать подзапрос для этого случая
2) Я хотел бы знать URLчтобы сделать поиск для этого
Я пытался это
@GetMapping(path = "/search/professor{p}/student{s}")
для http://localhost:8080/search/professor?namep=john/student?names=david без успеха