【发布时间】:2015-03-31 13:55:56
【问题描述】:
在我的单元测试中,我得到了JpaSystemException: ids for this class must be manually assigned before calling save() error。我已经改写了我的实体以使问题更短且更具可读性。
因此 student 与表 EnrolledInfo 具有可选的一对一关系。
学生实体
@Entity
@Table(name = "Student")
public class Student {
@Id
@Column(name = "studentId")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long studentId;
@OneToOne(fetch = FetchType.LAZY, mappedBy = "student", cascade = CascadeType.ALL)
private EnrolledInfo enrolledInfo;
private String firstName;
private String lastName;
// setters&getters etc..
}
EnrolledInfo 实体
@Entity
@Table(name = "EnrolledInfo")
public class EnrolledInfo implements Serializable {
@Id
private Long studentId;
@OneToOne(fetch = FetchType.Eager)
@PrimaryKeyJoinColumn
@JsonBackReference
private Student student;
@Column(name = "enrolledDate")
private Date enrolledDate;
@Column(name = "paidTuition")
private Boolean paidTuition;
// setters&getters etc..
}
将其放在一起进行测试(此错误)
在我保存学生实体之前,我肯定不必保存注册信息实体吗?
@Test
public void student_test() {
Student student = new Student();
EnrolledInfo enrolledInfo = new EnrolledInfo();
enrolledInfo.setPaidTuition(true);
student.setEnrolledInfo(enrolledInfo);
studentDao.save(student);
// errors on // JpaSystemException: ids for this class must be manually assigned before calling save():
}
【问题讨论】:
标签: java spring hibernate one-to-one