通过使用方法FindById()中的主键无法获得单个对象

时间:2019-06-16 07:15:29

标签: java spring-boot spring-data-jpa

我有一个表tbl_user,我试图从路径变量中给出ID时得到一个对象。但是,每当我尝试通过findById()创建方法时,服务部分都会出现错误。

void QRect::adjust(int dx1, int dy1, int dx2, int dy2)

控制器

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> {

}

在这里。 我究竟做错了什么?如果您能帮助的话,那就太好了。

1 个答案:

答案 0 :(得分:2)

如果您在findById接口上查看Repository定义,它将返回一个Optional而不是实体类:

  

Optional<T> findById(ID id)

     

返回:具有给定id或Optional#empty()的实体(如果没有)   找到