代码:
@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;
}
三个问题:
我必须把
CascadeType.REMOVE
放在两个实体中吗?我希望它能工作,这样如果我删除老师类(class)将被自动删除。在我的数据库中,我的 ID 无法正常工作。我想要它,以便 id 每次递增 1,但它目前增加了一些随机数。 为什么?
我还有 2 个
@Entity
类,但具有@ManyToMany
关系。 当我想在数据库中持久化一个新对象时,我必须做什么?
最佳答案
可能是其中一个的副本:
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
你检查过那些引用资料了吗?需要更多情报
您可以单独持久化它们中的每一个,或者持久化类 A 的实例并附加类 B 的实例,反之亦然(假设您使用的是正确的
CascadeType
和@ ManyToMany
关系和理解这两者的持久性框架)
关于java - 使用级联删除实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23901411/