Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠级联以保存父级和子级_Java_Hibernate_Cascade - Fatal编程技术网

Java 休眠级联以保存父级和子级

Java 休眠级联以保存父级和子级,java,hibernate,cascade,Java,Hibernate,Cascade,我有两节课。父母和孩子。详情如下: @Entity @Table(name = "parent") public class Parent implements Serializable { private String name; private List<Child> childs; @OneToMany(mappedBy="parent") @Cascade({CascadeType.SAVE_UPDATE, CascadeType.DELET

我有两节课。父母和孩子。详情如下:

@Entity
@Table(name = "parent")
public class Parent implements Serializable {
    private String name;
    private List<Child> childs;

    @OneToMany(mappedBy="parent")
    @Cascade({CascadeType.SAVE_UPDATE, CascadeType.DELETE})
    public List<Child> getChilds() {
        return childs;
    }
    @Id
    @Column(name="parent_name")
    public String getName() {
        return name;
    }    

}
当我使用session.save(parent)时,它会在数据库中保存父项和子项,但
子表中的父标识符将保持空。那么问题出在哪里呢?

在子实体上尝试以下操作:

 @ManyToOne(targetEntity = Parent.class)

 @JoinColumn(name = "parent", nullable = false)

如果我将OneToMany声明为单向,那么它工作得很好。

您如何在父级中生成PK ID?我没有看到这一点code@OneToMany(mappedBy=“parent”)表示hibernate将自动在child中创建父id,但未更改任何内容。只是关于sql约束冲突的一个错误:org.hibernate.exception.ConstraintViolationException:列“parent”不能为null我认为hibernate在保存父项时不会刷新子项。您可以自己做,如下所示:public void addChild(Child-Child){this.childs.add(Child);Child.setParent(this);}当我提交事务时,hibernate将发送查询以填充这样的列(子表中的父列)。所以我认为这是因为我自己在child中声明了parent,而hibernate将不再有责任在提交时填充它。不管怎样,如果没有其他意见的话,我会尝试用我自己的意见来填补它。
 @ManyToOne(targetEntity = Parent.class)

 @JoinColumn(name = "parent", nullable = false)