我如何使用自动生成的主键,这也是另一个表的外键来使用JPA插入数据?



我有两个表。结构为

个人表自动Id号,int,主键|名字,Varchar |Age, int |

<<p>人口表/strong>自动id号,int,外键|地址,varchar |

我创建了如下实体类:

PersonalEntity.class

@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;

Dao类

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

我正在使用jpa与Microsoft SQL。我想插入数据到个人表首先,数据库将自动生成一个主键。该主键是人口统计表的外键。当我调用persist()时,我得到了错误

INSERT语句与FOREIGN KEY约束冲突。可以不执行语句;contraint (null)

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

中插入数据

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

@OneToOne(cascade=CascadeType.ALL, optional=false)

最新更新