gpt4 book ai didi

java - JPA:表关联关系中的级联

转载 作者:太空宇宙 更新时间:2023-11-04 14:43:30 25 4
gpt4 key购买 nike

我有三个表,第一个用于保存学生信息,第二个用于保存类(class)信息。三是关联学生和类(class)studentclass表

下面给出了实体和关系

class Student
{
@Id
@Column(name="STUDENT_ID")
long studentId;
@OneToMany(cascade=CascadeType.ALL,mappedBy="student")
Set<StudentClass> studentClasses
}

class Class
{
@Id
@Column(name="CLASS_ID")
long classId;

@OneToMany(cascade=CascadeType.ALL,mappedBy="class")
Set<StudentClass> studentClasses
}

class StudentClass
{
@Id
@Column(name="STUDENT_CLASS_ID")
long studentClassid;

@ManyToOne
@JoinColumn(name="STUDENT_ID")
private Student student;

@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="CLASS_ID")
private Class class;
}

class persist{
public void persist(){
Student student1 = new Student();
Class class1 = new Class();

session.save(class1);

StudentClass studentClass = new StudentClass();
studentClass.setClass(class1);
studentClass.setStudent(student1);
student1.getStudentClasses().add(studentClass);
session.save(student1);
session.getTransaction().commit();
}
}

上面的持久化逻辑工作得很好,因为我分别保存了 class1 并最终保存了学生类(class)。但是,如果我尝试单独保存 Student1,class1 不会被保存吗?如果答案是类(class)并且学生没有直接关系,那么当我尝试获取学生时检索如何获取所有类(class)

最佳答案

首先,我认为您需要用 @Entity 注释您的实体类。对于您的实体 StudentClass 没有任何属性来证明您编码的合理性,只需使用 @ManyToMany 映射您的实体 Student 和 Class,如下所示: http://en.wikibooks.org/wiki/Java_Persistence/ManyToMany如果您需要检索获取所有类(class),则在获取学生时将 FetchType 的属性设置为 FetchType.EAGER 需要更多信息 Difference between FetchType LAZY and EAGER in Java Persistence API?

关于java - JPA:表关联关系中的级联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24700161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com