【发布时间】:2018-07-16 22:38:52
【问题描述】:
我对 Hibernate Java 持久性框架比较陌生,我正在尝试了解 Cascade 类型的工作原理。
我有两张表,一张是Assignment,一张是Student。 assignment表有assignmentNumber列、assignmentDescription列、assignmentGrade列和studentNumber列(Student列中的外键)。
Assignment|
-------
- assignmentNumber
- assignmentDescription
- assignmentGrade
- studentNumber
Student |
-------
- studentNumber
- studentFirst
- studentLast
学生表和作业表之间存在多对一的关系,因为可以为学生分配多个作业。所以在 AssignmentEntity 类中,我有以下设置:
@Entity
@Table(name = "ASSIGNMENT")
public class AssignmentEntity {
@Column(name = "assignmentNumber")
private Long assignmentNumber;
@Column(name = "assignmentGrade")
private String assignmentGrade;
@Column(name = "assignmentDescription")
private String assignmentDescription;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "studentNumber")
private StudentEntity studentEntity;
在 StudentEntity 类中:
@Entity
@Table(name = "STUDENT")
public class StudentEntity {
@Id
@Column(name = "studentNumber")
private String studentNumber;
@Column(name = "studentFirst")
private String studentFirst;
@Column(name = "studentLast")
private String studentLast;
这就是我遇到的问题:我应该将级联类型更改为什么,以便如果学生已经存在,当我保存新作业时不会有新条目?仅当与学生表中尚不存在的新学生一起保存作业时,我才想插入学生表。
【问题讨论】:
-
明确地说,我还想确保如果我删除一个作业,与该作业关联的学生不会被删除。
标签: hibernate jpa foreign-keys spring-data-jpa