我有三张桌子,一张用来存放学生信息,第二张用来存放班级信息。第三是将学生与班级的学生班级表关联起来

实体和关系如下

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和学生类时,以上持久性逻辑工作正常。但是,如果我尝试单独保存student1,则不会保存class1吗?如果答案是班级,并且与学生没有直接关系,那么当我尝试吸引学生时,检索如何获取所有班级

最佳答案

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

10-06 04:58