Jpa 家长';s自动生成的Id是必须级联的子实体的外键
我有一个自动生成Id的父实体。它有一个子实体列表,其组合键使用父实体自动生成的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 = "
@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)