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的私有注释。 见文档 。