0

我有两张桌子。结构是

个人表 Auto Id Number, int, Primary Key | 姓名,Varchar | 年龄,诠释 |

人口统计表 Auto id number, int, foreign key | 地址,varchar |

我创建了如下实体类:

个人实体类

@Entity
@Table("Personal")
public class PersonalEntity {

@Id
@Column(name="Auto Id Number")   
private int id;

@Column(name="Name")
private String name;

@Column(name="Age")
private int age;

@OneToOne(cascade=CascadeType.ALL)
@PrimaryKeyJoinColumn
private DemographicEntity de;

DemographicEntity.class

@Id
@Column(name="Auto Id Number")   
private int id;

@Column(name="Address") 
private String address;

道类

@Transactional
public PersonalEntity add(PersonalEntity pe, DemographicEntity de){
     pe.setDe(de);
     entitymanager.persist(pe);
     return pe;
}

我将 jpa 与 Microsoft SQL 一起使用。我想先将数据插入到 Personal 表中,db 会自动生成一个主键。该主键是人口统计表的外键。当我打电话给persist()我时,我得到了错误

INSERT 语句与 FOREIGN KEY 约束冲突。无法执行语句;约束(空)

我在这里做错了什么?我想在个人表中插入数据并使用自动生成的键,我想在人口统计表中插入数据

4

1 回答 1

0

您必须在 OneToOne 映射上设置 optional=false 以告诉 Hibernate FK 可能不为空

@OneToOne(cascade=CascadeType.ALL, optional=false)
于 2021-10-19T12:28:43.577 回答