Я хочу найти что-то из примера базы данных у меня есть три текстовых поля Имя, Фамилия и Пол если я ввода там Некоторые Firstname, некоторые Lastname, Мужчина Я хочу найти всех людей с что определенное имя и пол и показать его, как мне это сделать? Примечание: Я просто новичок в Spring и только начал обучение благодаряSpring MVC - Поиск с использованием Param
Контроллер:
@RequestMapping(value = "/student/search", method = RequestMethod.GET)
public String searchStudent(@Param("name") String name, @Param("type") String type, Map<String, Object> model) {
Map<String, String> params = new HashMap<String, String>();
params.put("name", name);
params.put("type", gender);
model.put("students",studentRepository.findAll(StudentSpecification.search(params)));
return "/students/list";
}
}
Спецификация:
public static Specification<Student> search(final Map<String, String> params) {
return (root, query, criteriaBuilder) -> {
List<Predicate> predicates = new ArrayList<Predicate>();
params.forEach((k, v) -> {
if (StringUtils.equals(k, "name")) {
if (StringUtils.isNotBlank(v)) {
Predicate hasFirstName =
criteriaBuilder.like(root.join("user").<String>get("firstName"), "%" + v + "%");
Predicate hasLastName =
criteriaBuilder.like(root.join("user").<String>get("lastName"), "%" + v + "%");
predicates.add(criteriaBuilder.or(hasFirstName, hasLastName));
}
}
});
return criteriaBuilder.and(predicates.toArray(new Predicate[] {}));
};
}
}
спасибо, что я пытался использовать другой код в спецификации, но его не работает, можете ли вы мне помочь? см. отредактированный –
Что не работает именно для вас? можете ли вы опубликовать сопоставление между субъектами «user» и «student»? – Awnen