С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java: Spring, Spring Boot
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 1
Регистрация: 29.10.2017
Сообщений: 114

Метод поиска в контроллере Spring не работает

17.04.2020, 02:03. Показов 2842. Ответов 9

Студворк — интернет-сервис помощи студентам
Пожалуйста, помогите решить проблему с поиском

Метод поиска в контроллере Spring не работает, изучаю только неделю)

В Page нужно передать именно Dto с ним не получается(

There was an unexpected error (type=Internal Server Error, status=500). No property user found for type User! org.springframework.data.mapping.Propert yReferenceException: No property user found for type User!

Когда я пытаюсь найти пользователей по имени пользователя, я получаю сообщение об ошибке, ссылаясь на строку в UserService:

Code
1
return userRepo.findByUsername (search, pageable);
UserRepo:

Java
1
2
3
4
5
6
7
8
9
public interface UserRepo extends CrudRepository<User, Long> {
User findByUsername(String username);
 
User findByActivationCode(String code);
 
Page<UserDto> findAll(Pageable pageable);
 
Page<UserDto> findByUsername(@Param("username") String search, Pageable pageable);
}
UserServise:

Java
1
2
3
4
5
6
7
8
9
10
11
12
@Service
public class UserService implements UserDetailsService {
@Autowired
private UserRepo userRepo;
 
public Page<UserDto> userList(Pageable pageable, String search) {
    if (search != null && !search.isEmpty()) {
        return userRepo.findByUsername(search, pageable);
    } else {
        return userRepo.findAll(pageable);
    }
}
Dto:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class UserDto {
    private Long id;
    private String firstname;
    private String lastname;
    private String username;
    private String email;
    ...
 
    public UserDto(User user) {
        this.id = user.getId();
        this.firstname = user.getFirstname();
        this.lastname = user.getLastname();
        this.username = user.getUsername();
        this.email = user.getEmail();
        ...
    }... + getters
контроллер:

Java
1
2
3
4
5
6
7
8
9
10
11
12
@GetMapping("/users")
public String readAllUsers(
        @RequestParam(required = false, defaultValue = "") String search,
        @PageableDefault(sort = {"id"}, direction = Sort.Direction.DESC) Pageable pageable,
        Model model) {
    Page<UserDto> page = userService.userList(pageable, search);
    model.addAttribute("url", "/admin/users");
    model.addAttribute("page", page);
    model.addAttribute("search", search);
    model.addAttribute("roles", Role.values());
    return "adminUsers";
}
Форма:

HTML5
1
2
3
4
5
6
7
8
9
<form action="/admin/users" method="get" class="d-flex justify-content-center">
            <!-- Default input -->
            <input type="search" name="search" value="${search?ifExists}"
                   placeholder="Enter you query" aria-label="Search" class="form-control">
            <button class="btn btn-primary btn-sm my-0 p" type="submit">
                <i class="fas fa-search"></i>
            </button>
 
        </form>
Полный текст сообщения об ошибке: https://drive.google.com/file/... sp=sharing
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.04.2020, 02:03
Ответы с готовыми решениями:

Spring - как отловить в контроллере поддомен ?
Возможно ли такое ? Причем задача сводится не к тому чтоб прописать контроллер для pd1.mysite.ru, а имеется ввиду что pd1 - неизвестный...

[Spring & Hibernate] Обойтись без @Transactional в контроллере
На SO прочитал, что все транзакции должны быть в сервисах и следует избегать @Transactional в контроллерах. Сейчас у меня контроллер...

Определить во вспомогательном контроллере метод основного?
Добрый день. Из вьюшки вызываю метод вспомогательного контроллера (NavController) для формирования меню так: ...

9
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
17.04.2020, 02:50
@param используется для @query
В magic words название поля должно быть
0
0 / 0 / 1
Регистрация: 29.10.2017
Сообщений: 114
17.04.2020, 10:46  [ТС]
Да про @param я знаю, но метод findAll работает хорошо с UserDto, а findByUsername не хочет((
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
17.04.2020, 11:10
1) @param убери
2)
Цитата Сообщение от Alexis_777 Посмотреть сообщение
String search
на всякий случай переименуй в username. Я не уверен, что это на что-то влияет, но это будет правильно.
3) ну и надо убедиться, что в User есть таки поле username
1
0 / 0 / 1
Регистрация: 29.10.2017
Сообщений: 114
17.04.2020, 17:18  [ТС]
xoraxax, в User есть данное поле.
Поиск работает только если изменить UserDto на User:
Java
1
    Page<User> findByFullnameContains(String firstname, Pageable pageable);
Из-за чего так не понимаю, т.к. по примеру в другом контроллере у меня всё тоже самое и поиск работает по имени с Dto, а тут ошибка((
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
17.04.2020, 17:23
а ну так ясен пень, очевидно вроде, что репозитории работают с энтити-классами

Добавлено через 52 секунды
как по-твоему спринг должен из usera сделать userdto?
0
0 / 0 / 1
Регистрация: 29.10.2017
Сообщений: 114
17.04.2020, 20:08  [ТС]
xoraxax, класс User помечен как Entity:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Entity
@Table
public class User implements UserDetails, Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
 
    @NotBlank(message = "Firstname cannot be empty")
    private String firstname;
 
    @NotBlank(message = "Lastname cannot be empty")
    private String lastname;
 
    private String fullname;
...
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
17.04.2020, 21:05
и чо?
0
0 / 0 / 1
Регистрация: 29.10.2017
Сообщений: 114
17.04.2020, 21:45  [ТС]
xoraxax, я правильно понял, чтобы Page<UserDto> findByUsername(String username, Pageable pageable) работал нужно @Query запрос писать?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
17.04.2020, 21:51
Лучший ответ Сообщение было отмечено Alexis_777 как решение

Решение

нужно возвращать страницу Userов
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.04.2020, 21:51
Помогаю со студенческими работами здесь

STemWin не работает в IAR на F439 контроллере
Привет всем. Долгое время я в общем-то без проблем использовал STemWin на F407, компилируя прошивки в кокосе. Решил запустить демку...

Не правильно работает последовательность выполнения операций в контроллере
Здравствуйте. У меня есть страница, на которой после ввода исходных данных по щелчку на кнопке &quot;Вычислить&quot; запускается сервис,...

Удаление с запроса поиска точек, пробелов, символов (метод поиска по сайту)
Добрый день, знатоки, подскажите: Если клиент вбивает в поиск номер продукта (например: 167.4А78-38 47) как сделать что бы с этого...

Spring AOP :: не вызывается метод invoke()
Hello world! С Java+Spring+AOP только разбираюсь, но не понимаю, почему не получается сделать всё как в примере:...

вид поиска, метод поиска
Написать программу, реализующую один из алгоритмов программного поиска данных в информационном массиве, расположенном в оперативной памяти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru