我有两个表。结构为
个人表自动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)