#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()