Hibernate级联

Hibernate逆向工程生成的所有内容都是这样的

     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumn(name =“column_id”)
     public Itinerary getColumnId(){
        返回this.columnId;
     }

我想要这个场景:当会话刷新时,首先保存所有构造的子节点,然后根据FK约束保存父对象。

当然,孩子需要先保存(自动!),因为有FK约束。

你告诉我:有一个CASCADE选项,但如何在JPA中使用它?

我尝试像这样添加级联:

     @ManyToOne(fetch = FetchType.LAZY,cascade = CascadeType.PERSIST)
     @JoinColumn(name =“column_id”)
     public Itinerary getColumnId(){
        返回this.columnId;
     }

对我不起作用。

先告诉我:应该用这个指令注释什么以及如何使它工作。

我得到“无法添加或更新子行:外键约束失败”exception。

事实上,我不想手工坚持一切! 只构造一个对象并坚持下去!

注释什么,使用什么指令以及如何使用?

尝试将级联注释放到映射的父端,例如

@OneToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE }, mappedBy = "children") private Set children = new HashSet(); 

您可能需要也可能不需要所有这些级联选项 – 选择您的选择。

这是一个参考页面以防万一。

你真正需要的是什么

 cascade=CascadeType.SAVE_UPDATE 

但这不是JPA的一部分。 所以你可以用它代替:

 cascade=CascadeType.ALL 

它将包括SAVE_UPDATE(使用Hibernate实现)。 但它可能包括你不喜欢的其他级联。

您应该结合JPA和Hibernate的私有注释。 见文档 。