使用级联删除实体

时间:2014-05-28 01:16:18

标签: java java-ee jpa

代码:

@Entity
class Teacher implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    Long id;
    @Column(nullable = false)
    @NotNull
    String name;
    @OneToMany(mappedBy = "teacher",cascade = CascadeType.REMOVE)
    List<Course> courses;
}

@Entity
public class Course implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    Long id;
    @Column(nullable = false)
    @NotNull
    String name;
    @ManyToOne(cascade = CascadeType.REMOVE)
    Teacher teacher;
}

三个问题:

  1. 我必须在两个实体中加上 CascadeType.REMOVE 吗?我希望它能够正常工作,这样如果我删除教师,课程将自动删除

  2. 在我的数据库中,我的ID无法正常工作。我想要它,以便id每次递增1,但它当前增加了一些随机数。的为什么吗

  3. 我还有2个@Entity个类但有@ManyToMany个关系。 当我想在数据库中保留新对象时,我该怎么办?

1 个答案:

答案 0 :(得分:0)

  1. 可能与其中一个重复:
    JPA: Cascade remove does not delete child
    JPA 2.0 orphanRemoval=true VS on delete Cascade
    https://stackoverflow.com/questions/22237631/jpa-does-not-cascade-delete-operation-from-parent-entity-to-child-entity
    你检查过这些参考文献吗?

  2. 需要更多英特尔

  3. 您可以单独或单独使用Classe B实例保存A类实例,反之亦然(假设您使用正确的CascadeType@ManyToMany关系,持久化框架,了解这两者)