Невозможность получить один объект с помощью первичного ключа в методе FindById () - PullRequest
0 голосов
/ 16 июня 2019

У меня есть таблица tbl_user, я пытаюсь получить один объект, в то время как я даю идентификатор из переменной пути. Но он выдает ошибку в служебной части всякий раз, когда я пытаюсь создать метод с помощью findById ().

таблица

CREATE TABLE `tbl_user` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(100) DEFAULT NULL,
  `email` VARCHAR(255) NOT NULL,
  `contact` VARCHAR(255) NOT NULL,
  `status` ENUM('active','inactive') NOT NULL,
  UNIQUE KEY `email` (`email`),
  UNIQUE KEY `contact` (`contact`),
  PRIMARY KEY (`id`)
);

Контроллер

@RequestMapping(value = "/find/user/{id}", method = RequestMethod.GET)
    public JsonNode getUser(HttpServletRequest httpServletRequest, @PathVariable(value = "id") long userId) throws IOException {

        JSONObject response = new JSONObject();

        User user = new User();

        try {
            user = userService.getUserByUserId(userId);

            if (user != null) {
                response = utility.createResponseObject(200, KeyWord.SUCCESS, new JSONObject(utility.convertPOJOtoString(user)));
            } else {
                response = utility.createResponseObject(500, KeyWord.ERROR, new JSONObject());
            }

        } catch (Exception e) {
            return objectMapper.readTree(utility.createResponse(500, KeyWord.ERROR, e.toString()).toString());
        }

        return objectMapper.readTree(response.toString());
    } 

Услуги

public User getUserByUserId(long userId) {
        return userRepository.findById(userId);
    }

Репозиторий

@Repository
public interface UserRepository extends JpaRepository<User, Long> {

}

Я подчеркиваю красным над

public User getUserByUserId(long userId) {
        return userRepository.findById(userId);
    }

здесь. Что я делаю неправильно? было бы здорово, если бы вы могли помочь.

1 Ответ

2 голосов
/ 16 июня 2019

Если вы посмотрите на определение findById в интерфейсе Repository, он возвращает Необязательный, а не класс сущности:

Optional<T> findById(ID id)

Возвращает : объект с указанным идентификатором или необязательный # empty (), если ничего не найдено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...