小编Bar*_* NL的帖子

在 JPA 中,将多对一作为主键会引发参照完整性约束违规

我定义了以下实体:

@Entity
public class Child implements Serializable
{

   @Id
   @ManyToOne(cascade = CascadeType.ALL)
   public Parent parent;

   @Id
   public int id;
}

@Entity
public class Parent
{
   @Id
   public int id;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用以下代码持久化 Child 时:

Parent p = new Parent();
p.id = 1;

Child c1 = new Child();
c1.id = 1;
c1.parent = p;

em.persist(c1);
Run Code Online (Sandbox Code Playgroud)

Hibernate 抛出“违反参照完整性约束”错误:

Caused by: org.h2.jdbc.JdbcSQLException: Referential integrity constraint violation: "FK3E104FC802AAC0A: PUBLIC.CHILD FOREIGN KEY(PARENT_ID) REFERENCES PUBLIC.PARENT(ID) (1)"; SQL statement:
insert into Child (parent_id, id) values (?, ?) [23506-171] …
Run Code Online (Sandbox Code Playgroud)

jpa foreign-keys primary-key many-to-one jpa-2.0

2
推荐指数
1
解决办法
9466
查看次数

标签 统计

foreign-keys ×1

jpa ×1

jpa-2.0 ×1

many-to-one ×1

primary-key ×1