java - 在 mysql hibernate 中保存子实体时忽略唯一约束

标签 java mysql hibernate orm spring-data-jpa

我有两张 table 。如下考虑它们。人员与电话具有 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);

查询在插入时忽略子表的唯一约束。它正在保存多个重复条目

什么似乎导致了问题?这是预期的行为吗?

最佳答案

您必须存储现有的 Person 实体

而不是实例化一个新实体

Person person = new Person();

尝试读取现有实体

Person existingPerson = personRepository.findOneByName(name);

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

phoneRepository.save(existingPerson)

关于java - 在 mysql hibernate 中保存子实体时忽略唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52516326/

相关文章:

java - Pojo 转 Json,如果 Pojo 有内嵌对象

java - 事务管理 spring 3 - hibernate 3.5

java - 让我的 Java 程序通过拖放来显示图像

java - Postgres 如何创建一个在查询中使用的函数

java - 如何覆盖 GWT/GXT 应用程序中的浏览器键盘快捷键?

mysql - 无法插入列名称为 from 、 to 的表

java - 如何知道日期是否在前 x 分钟内?

php - 从sql数据库获取数据,然后通过php将其用于选择查询

c# - 使用 MySqlCommand.ExecuteNonQuery 将几何数据插入表中

java - 让一个简单的 envers 示例工作起来很困难 : problem #34