#java #spring #spring-boot #spring-mvc #spring-data-jpa
Вопрос:
У меня в репозитории есть следующая функция
Set<Felhasznalo> findAllByNevContainsIgnoreCase(String nev);
Когда я использую эту функцию в контроллере, я вернул одного пользователя.
Например, если у меня есть строка «Джон», и я вызываю функцию репо с этой строкой, я получил обратно «Джон Доу», но у меня также есть «Джон Доу-младший» в базе данных, и он мне тоже нужен.
Почему я получаю только одного Пользователя?
Комментарии:
1. Используйте
Containing
вместоContains
(AFAIK) и убедитесь, что у вас есть правильныйhashCode
иequals
метод, поскольку вы используетеSet
те, которые важны.2. Я ничего не меняю
Ответ №1:
Я вижу, вы используете а Set
. Возможно, вы реализовали equals()
функцию, которая проверяет имена и Set
отфильтровывает повторяющиеся элементы.
Попробуйте изменить свой код на этот:
List<Felhasznalo> findAllByNevContainsIgnoreCase(String nev);
Так что используйте List
.
Комментарии:
1. Я изменил его на список, но у меня та же проблема
2. Что произойдет, если вы выполните запрос непосредственно в своей базе данных? Попробуйте протоколировать запросы, выполняемые Hibernate baeldung.com/sql-logging-spring-boot
Ответ №2:
Это связано с тем, что вы храните свой результат в Set
файле, который не допускает дублирования значений, но здесь у вас есть повторяющиеся имена. Попробуйте перейти Set
на List
as:
public List<Felhasznalo> findAllByNevContainsIgnoreCase(String nev);
Комментарии:
1. Я попробовал, но это не помогло
2. Попробуйте писать
findAllByNev(String nev)
вместоfindAllByNevContainsIgnoreCase(String nev)