有没有办法从表中删除关系中的记录?

时间:2013-12-14 09:36:33

标签: mysql hibernate

我创建了一个主表,如下所示

public class main()
{
@Id
private String ID;

 @OneToMany(cascade={CascadeType.ALL})
 @JoinColumn(name="ID")
   private List<Subtable1> Subtab;


@OneToMany(cascade={CascadeType.ALL})
@JoinColumn(name="ID")
 private List<Subtable2> Stutab2;

getter n setter...
}

我的子类是

public class subtable1{
@Column(name="Name")
String name; 

 @ManyToOne
 @JoinColumn(name="ID")
 private main m;
getter n setter..
}

public class subtable2{
@Column(name="AGE")
String age; 

 @ManyToOne
@JoinColumn(name="ID")
private main m;
getter n setter...
}

现在我需要删除主表中的记录。它不允许我直接在主表中删除它。如果我从subtable1和subtable2删除记录,它允许我删除主表中的相应记录。这个过程太长所以我需要删除主表中的记录并且应该在子表中删除相应的记录。我该怎么办?

1 个答案:

答案 0 :(得分:0)

可以通过设计mysql中的表来实现。 CASCADE是您所需要的: 看看这个:

  

CASCADE 会在父级更改时传播更改。 (如果你   删除一行,引用该行的约束表中的行   也可以删除等。)

     

SET NULL 在父行消失时将列值设置为NULL。

     

RESTRICT 导致父行的DELETE尝试失败。