2010-04-07 102 views
1

所有什么Hibernate逆向工程产生是这样的Hibernate的级联

 
    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name = "column_id") 
    public Itinerary getColumnId() { 
     return this.columnId; 
    } 

我想这样的场景:当会话刷新,首先建立孩子的得救,那么父对象,根据FK约束。

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

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

我尝试添加级联是这样的:

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

不为我工作。

请先告诉我:该指令应注明什么以及如何使其工作。

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

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

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

回答

1

尝试把级联注释映射的父结束,像

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

您可能会或可能不会需要所有这些级联选择 - 挑你的选择。

这是一个reference page以防万一。

1

你真正需要的是

cascade=CascadeType.SAVE_UPDATE 

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

cascade=CascadeType.ALL 

它将包括SAVE_UPDATE(与Hibernate实现)。但它可能包含您不喜欢的其他级联。