Spring Data JPA, Hibernate: org.postgresql.util.PSQLException: ОШИБКА: повторяющееся значение ключа нарушает уникальное JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spring Data JPA, Hibernate: org.postgresql.util.PSQLException: ОШИБКА: повторяющееся значение ключа нарушает уникальное

Сообщение Anonymous »

У меня есть две сущности: Собака и Игрушка. Toy связан со строковым путем.
toys_paths таблица:

Код: Выделить всё

dog_id
toy_path
toy_id
( и toy_id) должны быть уникальной парой.
Внутри объектов Dog он хранится как Map:< /p>

Код: Выделить всё

@Entity(name = "dogs")
public class Dog {
@Id
@SequenceGenerator(name = "dog_sequence",
sequenceName = "dog_sequence",
allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE,
generator = "dog_sequence")
private Long id;

@ElementCollection
@CollectionTable(name = "toy_paths",
joinColumns = {@JoinColumn(name = "dog_id")})
@MapKeyJoinColumn(name = "toy_id")
@Column(name = "path")
private Map toyPaths;
}

Код: Выделить всё

@Entity(name = "toys")
publi class Toy {
@Id
@SequenceGenerator(name = "toy_sequence",
sequenceName = "toy_sequence",
allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE,
generator = "toy_sequence")
private Long id;
...
Внутри DogService:

Код: Выделить всё

  public boolean createDog(DogDto dogDto) {
...
Toy toy = toyRepository.findByName("A");
dog.getToyPaths().put(toy, "/some/path");  // if this is removed, no exception

Dog dog = copyData(dogDto);
dogRepository.save(dog); // exception here
return true;
}
Когда я пытаюсь создать новую собаку, я получаю исключение

Код: Выделить всё

org.postgresql.util.PSQLException: ERROR:
duplicate key value violates
unique constraint "toy_paths_pkey"

Detail: Key (dog_id, toy_id)=(67, 2)
already exists.
Это происходит только тогда, когда он пытается сохранить Map. Если эта карта пуста, Собака сохраняется в базе данных без ошибок.
Что может быть причиной этого исключения? Тот же код раньше работал нормально, но каким-то образом это происходит.

Подробнее здесь: https://stackoverflow.com/questions/791 ... -duplicate
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»