Spring Boot Hibernate — переопределение объекта в БД на основе уникального ключа

#java #spring #spring-boot #hibernate

#java #spring #spring-boot #гибернация

Вопрос:

Просто чтобы уточнить: я работаю с API Confluence и получаю некоторые данные, поэтому теперь, если я получаю 2 раза одинаковые данные с одной и той же страницы, я бы хотел «переопределить» сущность в БД, моя таблица базы данных получила «идентификатор», который я получаю из API (этоявляется УНИКАЛЬНЫМ), поэтому я пометил его в своей БД как:

 page_id VARCHAR(255) NOT NULL UNIQUE
  

в первый раз, когда это работает, после этого я получаю сообщение об ошибке:

 java.sql.SQLException: Duplicate entry '10817891' for key 'page_id'
  

obv. поскольку он не переопределяет сущность в БД, мой вопрос здесь в том, как мне это сделать?
мой ключ идентификатора сущности в java.class выглядит примерно так:

 @Column(name = "page_id", unique = true)
private String pageId;
  

я подумал, что если «столбец» помечен как «уникальный», он переопределит его, когда я попытаюсь его сохранить,

для сохранения я использую CrudRepository, который очень удобен

Комментарии:

1. Уникальность базы данных ограничит вас только тем, что вы не вставите два данных с одинаковым значением, но не обновит существующий, как вы думали. Вам нужно будет обработать это исключение или сначала проверить в базе данных, существует ли это значение, и, если существует, обновить строку.

2. если вы устраните UNIQUE ограничение из вашей БД, hibernate, скорее всего, объединит записи так, как вы хотите, с помощью save() / saveAll()