我对Hibernate Java持久性框架还比较陌生,我试图了解Cascade类型是如何工作的。
我有两个表,一个是作业,另一个是学生。 作业表有一个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;
这是我遇到的问题:如何将层叠类型更改为什么,以便如果学生已经存在,则在保存新作业时不会有新条目?我只想在学生表中不存在新学生的情况下保存作业,才将其插入到学生表中。
答案 0 :(得分:0)
如果使用正确,JPA已经在这样做。您没有描述如何创建实体实例,但是这是它的外观(对于已经存在的学生):
resolution
/存储库中加载Student
EntityManager
引用该实例。 关键不是通过调用Assignment
并设置其Student
来创建new
的实例。