При весенней загрузке, если не удалось вставить данные после проверки, существует ли эта пара данных в таблице, вставка произойдет, если эта пара не существует - PullRequest
0 голосов
/ 12 июня 2019

У меня есть таблица user_followers. В ней есть два поля user_id и follow_id из пользовательской таблицы. Я должен вставить user_id, follow_id в эту таблицу после проверки, если эта пара уже существует и статус неактивен, тогда я просто изменю статус, который работает в моем коде. Но если эта пара не существует, то вставка произойдет.

таблица user_followers:

CREATE TABLE `user_followers` (
  `id` BIGINT(255) NOT NULL AUTO_INCREMENT,
  `user_id` BIGINT(100) NOT NULL,
  `following_id` BIGINT(100) NOT NULL,
  `status` ENUM('active','inactive') NOT NULL,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=latin1;

Контроллер

@RequestMapping(value = "/add/follower", method = RequestMethod.POST)
    public JsonNode addFollower(HttpServletRequest httpServletRequest, @RequestBody String body) throws IOException {

        long startTime = System.currentTimeMillis();

        utility.printCallingUrl(httpServletRequest);

        JSONObject request = new JSONObject(body);
        JSONObject response = new JSONObject();

        String auth = httpServletRequest.getHeader("Authorization");
        String authentication = utility.getBasicAuth();

        if (auth.equals(authentication)) {
            try {
                UserFollowers userFollower = new UserFollowers();

                User user = userService.getUser(request.getLong("userId"));

                User following = userService.getUser(request.getLong("followingId"));

                userFollower = userFollowersService.getUserFollowerYYYY(user, following);

                if (userFollower == null) {
                    userFollower.setFollower(user);
                    userFollower.setFollowing(following);
                    userFollower.setStatus("active");
                    userFollower = userFollowersService.createUserFollowers(userFollower);

                    response = new JSONObject(utility.convertPOJOtoStringHiding(userFollower));

                } else if (userFollower != null && userFollower.getStatus().equals("inactive")) {
                    userFollower.setStatus("active");
                    userFollower = userFollowersService.updateUserFollower(userFollower);
                    response = new JSONObject(utility.convertPOJOtoStringHiding(userFollower));

                } else {
                    response = new JSONObject();
                }

            } catch (Exception e) {
                response = utility.createResponse(500, KeyWord.ERROR, e.toString());
                utility.showMessage(e.toString());
            }
        } else {
            response = utility.createResponse(500, KeyWord.ERROR, KeyWord.AUTHENTICATION);
        }

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

сервисная часть

public UserFollowers createUserFollowers(UserFollowers userFollowers) {
        return userFollowersRepository.save(userFollowers);
    }

часть хранилища

public UserFollowers getUserFollowerYYYY(User user, User following) {
        return userFollowersRepository.findByFollowerAndFollowing(user, following);
    }

Что еще, если часть в контроллере работает нормально, протестировано с данными. не знаю почему

if (userFollower == null) {
                    userFollower.setFollower(user);
                    userFollower.setFollowing(following);
                    userFollower.setStatus("active");
                    userFollower = userFollowersService.createUserFollowers(userFollower);

                    response = new JSONObject(utility.convertPOJOtoStringHiding(userFollower));

                }

эта часть не работает.

1 Ответ

1 голос
/ 12 июня 2019

Вам нужно инициализировать объект userFollower. В состоянии if вы проверяете, является ли оно нулевым или нет, и если оно равно нулю, то вы устанавливаете в него значения. Но вы не можете установить значения в нулевом объекте. Ниже у вас должен работать фрагмент:

if (userFollower == null) {
                userFollower = new UserFollowers();
                userFollower.setFollower(user);
                userFollower.setFollowing(following);
                userFollower.setStatus("active");
                userFollower = userFollowersService.createUserFollowers(userFollower);

                response = new JSONObject(utility.convertPOJOtoStringHiding(userFollower));

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