Создаю свой первый API, столкнулся с ошибкой сохранения для типа «что-то» и не смог создать запросJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Создаю свой первый API, столкнулся с ошибкой сохранения для типа «что-то» и не смог создать запрос

Сообщение Anonymous »


Я программирую API, и когда я запускаю программу, она запускается, но не работает. В логах написано

Свойство saveAll для типа UserModel не найдено

и я тоже получаю

Не удалось создать запрос для общедоступного абстрактного java.util.List org.springframework.data.jpa.repository.JpaRepository.saveAllAndFlush(java.lang.Iterable); Причина: не найдено свойство saveAll для типа UserModel. Эти ошибки поставили меня в тупик, я не думаю, что мне нужно сохранять все в своем репозитории, я думал, что эта функция входит в состав операций crud.

Вот мой код, я буду продолжать искать его в Интернете, но если кто-то уже видел эту ошибку раньше, я буду признателен за любую помощь.

Вот мой контроллер:

пакет com.vault.safe.MyController; импортировать com.vault.safe.CustomExceptions.UserNotFoundException; импортировать com.vault.safe.MyModel.UserModel; импортировать com.vault.safe.MyService.UserService; импортировать org.springframework.beans.factory.annotation.Autowired; импортировать org.springframework.boot.jdbc.DataSourceBuilder; импортировать org.springframework.http.ResponseEntity; импортировать org.springframework.web.bind.annotation.*; импортировать org.slf4j.Logger; импортировать org.slf4j.LoggerFactory; импортировать javax.sql.DataSource; импортировать java.sql.Connection; импортировать java.sql.SQLException; @RestController @RequestMapping("/пользователи") публичный класс UserController { частный статический окончательный регистратор Logger = LoggerFactory.getLogger(UserController.class); частный окончательный UserService userService; //************************************************ ************************************* //Конструкторы, геттеры и сеттеры @Autowired общественный UserController (UserService userService) { супер(); this.userService = userService; } общественный UserService getUserService () { вернуть userService; } //************************************************ ************************************* @GetMapping("/isConnected") public ResponseEntity is_connected() { пытаться { // Попытка подключения к базе данных MySQL Источник данных dataSource = DataSourceBuilder.create() .url("jdbc:mysql://127.0.0.1:3306/user_info") .username("корень") .password("JunesDragon12") .driverClassName("com.mysql.cj.jdbc.Driver") .строить(); Соединение Соединение = dataSource.getConnection(); соединение.закрыть(); return ResponseEntity.ok("Подключено к базе данных MySQL."); } catch (SQLException e) { return ResponseEntity.ok("Не подключено к базе данных MySQL."); } } @PostMapping("/добавить") public UserModel addUser(@RequestBody UserModel userModel){ logger.info("Добавление пользователя: {}", userModel); UserModel добавленныйПользователь = userService.addUser(userModel); logger.info("Добавлен пользователь: {}", addUser); вернуть добавленного пользователя; } @GetMapping("/findById/{id}") public ResponseEntity getUserById(@PathVariable Long id){ пытаться{ logger.info("Извлечение пользователя по идентификатору: {}", id); Пользователь UserModel = userService.findById(id); logger.info("Найден пользователь: {}", user); вернуть ResponseEntity.ok(пользователь); }catch(UserNotFoundException ex){ logger.error("Пользователь не найден с идентификатором: {}", id); вернуть ResponseEntity.notFound().build(); } } // public UserModel findById(@PathVariable Long userId){ // возвращаем userService.findById(userId); // } @PutMapping("/update/{userId}") public UserModel updateUser(@PathVariable Long userId, @RequestBody UserModel updateUser) { logger.info("Обновление пользователя с идентификатором: {}", userId); UserModel updateUserModel = userService.updateUserInfo(userId, updateUser); logger.info("Пользователь обновлен: {}", updateUserModel); вернуть обновленную модель пользователя; } @DeleteMapping("/delete/{userId}") public void deleteUser(@PathVariable Long userId) { logger.info("Удаление пользователя с идентификатором: {}", userId); userService.deleteById(userId); logger.info("Пользователь удален: {}", userId); } } Вот мой репозиторий:

пакет com.vault.safe.Repositories; импортировать java.util.Необязательно; импортировать com.vault.safe.MyModel.UserModel; импортировать org.springframework.data.jpa.repository.JpaRepository; импортировать org.springframework.stereotype.Repository; @Репозиторий общедоступный интерфейс UserRepository расширяет JpaRepository { Необязательный findById (длинный идентификатор); //Iterable saveAll(Iterable Модель пользователя); } вот мой сервис:

пакет com.vault.safe.MyService; импортировать com.vault.safe.CustomExceptions.UserNotFoundException; импортировать com.vault.safe.MyModel.UserModel; импортировать com.vault.safe.Repositories.UserRepository; импортировать org.springframework.stereotype.Service; импортировать org.springframework.beans.factory.annotation.Autowired; импортировать java.util.Необязательно; импортировать org.slf4j.Logger; импортировать org.slf4j.LoggerFactory; @Услуга общественный класс UserService { частный статический окончательный регистратор Logger = LoggerFactory.getLogger(UserService.class); частный конечный UserRepository userRepository; @Autowired общественный UserService (UserRepository userRepository) { супер(); this.userRepository = userRepository; } общественный UserRepository getUserRepository () { вернуть userRepository; } //************************************************ **************************************************** ********* общественная UserModel addUser (пользователь UserModel) { logger.info("Добавление пользователя: {}", user); UserModel добавленныйПользователь = userRepository.save(пользователь); logger.info("Добавлен пользователь: {}", addUser); вернуть добавленного пользователя; } общественная UserModel findById (длинный идентификатор) { logger.info("Извлечение пользователя по идентификатору: {}", id); Необязательный userOptional = userRepository.findById(id); если (userOptional.isPresent()) { Пользователь UserModel = userOptional.get(); logger.info("Найден пользователь: {}", user); вернуть пользователя; } еще { logger.error("Пользователь не найден с идентификатором: {}", id); throw new UserNotFoundException("Пользователь не найден с идентификатором: " + id); } } общественный недействительный deleteById (длинный идентификатор пользователя) { logger.info("Удаление пользователя с идентификатором: {}", userId); userRepository.deleteById(userId); logger.info("Пользователь удален: {}", userId); } public UserModel updateUserInfo (Long userId, UserModel userModel) { //Извлекаем пользователя из репозитория logger.info("Обновление пользователя с идентификатором: {}", userId); Необязательный optionUser = userRepository.findById(userId); //проверяем, существует ли пользователь если (optionalUser.isPresent()) { Пользователь UserModel = optionUser.get(); user.setUsername(userModel.getUsername()); user.setEmail(userModel.getEmail()); user.setFirstName(userModel.getFirstName()); user.setLastName(userModel.getLastName()); user.setAge(userModel.getAge()); user.setStreet1(userModel.getStreet1()); user.setStreet2(userModel.getStreet2()); user.setCity(userModel.getCity()); user.setState(userModel.getState()); user.setCountry(userModel.getCountry()); user.setZipcode(userModel.getZipcode()); user.setPhone(userModel.getPhone()); //Сохраняем обновления пользователя UserModel updateUser = userRepository.save(user); logger.info("Пользователь обновлен: {}", обновленныйПользователь); вернуть обновленного пользователя; } еще { //Обрабатываем случай, когда пользователь не существует logger.error("Пользователь не найден с идентификатором: {}", userId); выдать новое UserNotFoundException("Пользователь не найден с идентификатором: " + идентификатор пользователя); } } } вот моя модель:
пакет com.vault.safe.MyModel; импортировать javax.persistence.*; импортировать org.springframework.data.relational.core.mapping.Table; импортировать javax.persistence.Id; @Сущность @Table(name = "пользователи") общественный класс UserModel { @Идентификатор @Column(имя = "идентификатор") @GeneratedValue(стратегия = GenerationType.IDENTITY) частный длинный идентификатор; @Column(name = «имя пользователя», длина = 50, значение null = false) личное имя пользователя String; @Column(name = «электронная почта», длина = 100, значение null = false) личная строка электронной почты; @Column (имя = «пароль», длина = 255, значение null = false) личный строковый пароль; @Column(name = «пароль2», длина = 255, значение null = false) частная строка пароля2; @Column(name = «first_name», длина = 50, значение null = false) частная строка firstName; @Column(name = «last_name», длина = 50, значение null = false) частная строка LastName; @Column(name = "возраст") частный Целочисленный возраст; @Column(name = "улица1", длина = 100, значение null = false) частная улица String1; @Column(name = "улица2", длина = 100) частная Струнная улица2; @Column(name = «город», длина = 50, значение null = false) частный Стринг-Сити; @Column (имя = «состояние», длина = 50, значение null = false) состояние частной строки; @Column (имя = «страна», длина = 50, значение null = false) частная строка страны; @Column(name = «почтовый индекс», длина = 10, значение null = false) частный строковый почтовый индекс; @Column(name = «телефон», длина = 10, значение null = false) личный телефон String; общественная модель пользователя () { // Конструктор по умолчанию } public UserModel(длинный идентификатор, строковое имя пользователя, строка электронной почты, строка пароля, строка пароля2, строка firstName, строка LastName, целое число возраста, строка street1, строка street2, строка города, строка штата, строка страны, строка почтового индекса, строка телефона) { this.id = идентификатор; this.username = имя пользователя; this.email = электронная почта; this.password = пароль; этот.пароль2 = пароль2; это.ПервоеИмя = ПервоеИмя; this.lastName = последнее имя; this.age = возраст; эта.улица1 = улица1; эта.улица2 = улица2; this.city = город; this.state = состояние; this.country = страна; this.zipcode = почтовый индекс; this.phone = телефон; } общественный длинный getId() { вернуть идентификатор; } общественный недействительный setId (длинный идентификатор) { this.id = идентификатор; } публичная строка getUsername() { вернуть имя пользователя; } public void setUsername (String username) { this.username = имя пользователя; } публичная строка getEmail() { вернуть электронное письмо; } public void setEmail(String email) { this.email = электронная почта; } общественная строка getPassword() { вернуть пароль; } public void setPassword (строковый пароль) { this.password = пароль; } публичная строка getPassword2() { вернуть пароль2; } общественный недействительный setPassword2 (строка пароля2) { этот.пароль2 = пароль2; } публичная строка getFirstName() { вернуть имя; } public void setFirstName (String firstName) { это.ПервоеИмя = ПервоеИмя; } публичная строка getLastName() { вернуть фамилию; } public void setLastName (String LastName) { this.lastName = последнее имя; } публичное целое число getAge() { возвратный возраст; } public void setAge(Целый возраст) { this.age = возраст; } публичная строка getStreet1() { верните улицу1; } общественный недействительный setStreet1 (String street1) { эта.улица1 = улица1; } публичная строка getStreet2() { обратная улица2; } общественный недействительный setStreet2 (String street2) { эта.улица2 = улица2; } общественная строка getCity() { вернуть город; } public void setCity(String city) { this.city = город; } общественная строка getState() { возвратное состояние; } public void setState (состояние строки) { this.state = состояние; } публичная строка getCountry() { страна возврата; } public void setCountry (Строка страны) { this.country = страна; } публичная строка getZipcode() { вернуть почтовый индекс; } public void setZipcode (строковый почтовый индекс) { this.zipcode = почтовый индекс; } публичная строка getPhone() { вернуть телефон; } public void setPhone(String phone) { this.phone = телефон; } }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»