我对此很新,我试图在Student对象和Grades对象之间建立一个简单的一对一关系。我正在使用hsqldb内存数据库进行spring引导。我会先显示我的代码然后解释我的问题。如何正确设置@OneToOne与JPA Hibernate的关系?
Student.java
@Entity
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String firstName;
private String lastName;
@OneToOne(cascade = CascadeType.ALL)
private Grades grades;
//Getters and setters
}
Grades.java
@Entity
public class Grades {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private int midterm;
private int finalExam;
@OneToOne(cascade = CascadeType.ALL)
private Student student;
//Getters and setters
}
StudentRepository.java
public interface StudentRepository extends JpaRepository<Student, Long> {
}
是我的设置对学生和成绩是否正确?我只是一个简单的一对一关系,我将Grades ID作为外键存储在一个Student对象中。
每当我使用
new Grades()
创建Grades对象并将其传递给构造函数中的Student对象时,它允许我将相同的Grades对象分配给多个学生。当他们用一对一的方式进行注释时,这怎么可能?我打开了hibernate sql logging,看看使用数据库时发生了什么。它似乎将grades_id存储在Student对象中很好,但它显示Grades对象中的student_id为空。为什么这是null?
感谢您的任何帮助。
谢谢,非常有帮助 – DraegerMTN