Уникальное ограничение игнорируется при сохранении дочерней сущности в mysql hibernate - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть две таблицы.Рассмотрите их как ниже.Person имеет OneToMany связь с Phone.

create table Person(
  id varchar,
  name varchar
);

create table Phone(
  id varchar,
  name varchar,
  person_id varchar,
  UNIQUE KEY `unq` (`name`)
  FOREIGN KEY (person_id) REFERENCES Person(id)
);

Теперь Java-код выглядит следующим образом.

Person person = new Person();
Phone phone = new Phone();
phone.setPerson(person);
phoneRepository.save(phone);

Запрос игнорирует уникальные ограничения на дочернюю таблицу при вставке.Это сохраняет несколько повторяющихся записей

Что, кажется, вызывает проблему?Ожидаемое поведение?

1 Ответ

0 голосов
/ 26 сентября 2018

Вы должны сохранить существующую сущность Person

Вместо того, чтобы создавать новую сущность

Person person = new Person();

, попробуйте прочитать существующую сущность

Person existingPerson = personRepository.findOneByName(name);

и установить существующую сущностьна ваш телефон

phoneRepository.save(existingPerson)
...