PSQLException: ОШИБКА: двойное значение ключа нарушает ограничение уникальности - PullRequest
0 голосов
/ 04 июня 2018

У меня есть две сущности: User и Video.

User имеет такое поле:

@Column(name = "favourite")
@ElementCollection(targetClass = Video.class, fetch = FetchType.EAGER)
@CollectionTable(name = "favourite_videos", joinColumns = @JoinColumn(name = "user_id"))
private Set<Video> favourite;

A user может добавить видео в свою коллекцию.Однако, когда другой user пытается добавить video, который уже был добавлен другим user, возникает ошибка:

org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "uk_4ai4388fdjwvno9jj7u9x1h9x".
Key (favourite_id)=(17) already exists.

В базе данных это выглядит:

enter image description here

Я имею в виду, что пользователь с другим идентификатором не может добавлять видео с идентификаторами 17 и 18 или любой другой идентификатор видео, которое уже имеетбыл добавлен другим пользователем.Вопрос в том, чтобы пользователи могли добавлять видео, которые уже есть у других пользователей.Я хочу, чтобы объект Video не принадлежал только одному пользователю.

1 Ответ

0 голосов
/ 04 июня 2018

В вашей таблице favourite_videos первичный ключ - favourite_id.Таким образом, в этом случае не может быть другого кортежа, в котором favourite_id используется в предыдущем кортеже.(кортеж - одна запись (одна строка))

Эту проблему можно избежать, создав составной первичный ключ, создав комбинацию user_id и favourite_id в качестве первичного ключа.

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