Неправильный тип столбца сущности JPA, вызывающий проблемы для FindById - PullRequest
0 голосов
/ 18 мая 2019

В настоящее время я работаю над бэкенд-приложением Spring. У нас есть объект Partner с аннотацией @GeneratedValue(strategy = GenerationType.IDENTITY для автоматического создания первичных ключей. Первичный ключ partnerId имеет тип long.

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "partner_id")
    private long partnerId;

В нашем Partner классе контроллеров мы написали некоторые функции для основных операций CRUD. Когда мы делаем post вызов для добавления партнера, мы пропускаем первичный ключ partnerId и включаем информацию для других полей. Сообщение успешно, и данные можно увидеть в базе данных.

Однако, когда мы пытаемся позвонить put, чтобы обновить только что добавленного Партнера, вместо этого создается новая запись Партнера в таблице Партнеров.

Сначала это казалось проблемой на уровне кода, но мы протестировали вызов put для одной из записей, которые мы добавили в таблицу из нашего базового набора данных, она работает нормально. Мы использовали FindById() и isPresent(), чтобы узнать, существует ли запись для этого нового пользователя с partnerId из входящего объекта Partner из вызова put, но полученного false. Но с одной из 3 существующих записей Партнеров, которые мы добавили в базу данных вручную с запросами, они вернули true.

@RequestMapping(method = RequestMethod.PUT, value = PATH)
    public ResponseEntity<?> updatePartner(@RequestBody Partner partner) {
        ...
        System.out.println(partnerRepository.findById(partner.getPartnerId()).isPresent());
    }

Кажется, что вызов post устанавливает новый объект Partner в базе данных, но каким-то образом partnerId любой новой опубликованной записи не относится к типу long, что нарушает findById().isPresent(). Мне просто интересно, знает ли кто-нибудь, почему это происходит, поскольку наша сущность устанавливает первичный ключ для типа long, и контроллер отправляет в базу данных объект Partner.

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