toys_paths таблица:
Код: Выделить всё
dog_id
toy_path
toy_id
Код: Выделить всё
dog_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;
...
Код: Выделить всё
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.
Что может быть причиной этого исключения? Тот же код раньше работал нормально, но каким-то образом это происходит.
Подробнее здесь: https://stackoverflow.com/questions/791 ... -duplicate