我有兩個表和對象:StudentsInGroup和GroupRegistration。當映射是@ManyToOne時,對象引用未保存的瞬態實例
class StudentInGroup {
@Id
@Column (name = "ID")
private Integer id;
// other fields
@ManyToOne(fetch = FetchType.EAGER, targetEntity = GroupRegistration.class)
@JoinColumn(name = "GROUP_CODE")
private GroupRegistration groups;
// other methods
}
class GroupRegistration {
@Id
@Column (name = "ID")
private Integer Id;
// other fields
@Column(name = "GROUP_CODE")
private Integer groupCode; // this is not primary key
// other methods
}
我有形式和方法insertStudentInGroup(StudentInGroup student);但是當我調用這個方法時,我得到了異常:對象引用一個未保存的瞬態實例 - 保存沖洗前的瞬態實例:StudentInGroup.groups - > GroupRegistration
我看到人們有這種問題,但他們使用級聯,我不不需要級聯。有誰能夠幫助我。
您的命名非常混亂:爲什麼將字段命名爲「groups」,因爲它只包含一個組註冊?它應該被命名爲「組」或「組註冊」。爲什麼在StudentInGroup中命名GROUP_CODE列,因爲它沒有引用GroupRegistration的GROUP_CODE列,但ID列?它應該被命名爲GROUP_ID。 –
@JBnizet列名GROUP_CODE是真的,因爲它引用GroupRegistration的GROUP_CODE列,它不是ID,它是組代碼 – Chala
不,它不引用GROUP_CODE。只有當您向JoinColumn註釋添加'referencedColumnName =「GROUP_CODE」'時纔會這樣。否則,它會引用目標實體的ID。 –