Jpa 家长';s自动生成的Id是必须级联的子实体的外键

Jpa 家长';s自动生成的Id是必须级联的子实体的外键,jpa,foreign-keys,one-to-many,cascade,auto-generate,Jpa,Foreign Keys,One To Many,Cascade,Auto Generate,我有一个自动生成Id的父实体。它有一个子实体列表,其组合键使用父实体自动生成的id作为外键 母实体 @Entity @Table(name = "parent_table") public class Parent { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", nullable = false) private Integer id; @OneToMany(mappedBy = "

我有一个自动生成Id的父实体。它有一个子实体列表,其组合键使用父实体自动生成的id作为外键

母实体

@Entity
@Table(name = "parent_table")
public class Parent {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Integer id;

@OneToMany(mappedBy = "parent", cascade = CascadeType.PERSIST)
private List<Child> children;

}
子PK

@Embeddable
public class ChildPK{

@Column(name = "id", nullable = false)
private Integer id;

@Column(name = "id2", nullable = false)
private Short id2;

@Column(name = "id3", nullable = false)
private Integer id3;
}

在这里,子实体的复合键使用自动生成的父键id和其他2个值

我用所有必需的值以及子实体及其所有值填充父实体。只有父级和子级中的id参数保留为空,因为它必须自动生成

但是,在执行create方法时,父实体将与生成的id一起插入,但该id未设置到子实体中,从而导致在插入子实体时出现空列错误

java.sql.SQLException: Cannot insert a null into column (child.id)

最可能的原因是您没有在子对象上设置父引用。setParent(家长);我也有同样的问题,并且设置了父项和子项,但子项保存仍然失败,并带有外键约束。
java.sql.SQLException: Cannot insert a null into column (child.id)