在mysql休眠中保存子实体时忽略唯一约束

时间:2018-09-26 11:08:10

标签: java mysql hibernate orm spring-data-jpa

我有两个桌子。如下考虑它们。人与手机有OneToMany关系。

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 :(得分:0)

您必须存储现有的Person实体

代替实例化新实体

Person person = new Person();

尝试读取现有实体

Person existingPerson = personRepository.findOneByName(name);

并将现有实体设置为您的手机

phoneRepository.save(existingPerson)