我在使用Hibernate 5和SpringMVC的Web应用程序中工作,当我只使用简单表(任何表之间没有关系)时,一切正常,更新,保存,删除...,但是如果我尝试在之间添加一些关系表,当我映射时,出现此错误:
@OneToOne or @ManyToOne on 'univ_orientation.dz.Entity.cursusGlobale.Student_idStudent' references an unknown entity: int
我经过搜索来解决此问题,发现它是一个配置问题,Hibernate无法将类
cursusGlobale
识别为实体。我的问题是,为什么在使用关系时Hibernate不能将类
cursusGlobale
识别为实体,但是如果我只使用简单的表却没有表之间的关系,那会否呢? package univ_orientation.dz.Entity;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
@Entity
@Table(name="cursusGlobale")
public class cursusGlobale {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="idcursusGlobale")
private int idcursusGlobale;
@Column(name="nbrRedoubler")
private int nbrRedoubler;
@Column(name="nbrDette")
private int nbrDette;
@Column(name="idStudent")
private int idStudent;
@OneToOne( cascade= CascadeType.ALL)
@JoinColumn(name="Student_idStudent")
private int Student_idStudent;
public cursusGlobale() {
}
public cursusGlobale(int nbrRedoubler, int nbrDette, int
student_idStudent) {
super();
this.nbrRedoubler = nbrRedoubler;
this.nbrDette = nbrDette;
idStudent = student_idStudent;
}
public int getIdcursusGlobale() {
return idcursusGlobale;
}
public void setIdcursusGlobale(int idcursusGlobale) {
this.idcursusGlobale = idcursusGlobale;
}
public int getNbrRedoubler() {
return nbrRedoubler;
}
public void setNbrRedoubler(int nbrRedoubler) {
this.nbrRedoubler = nbrRedoubler;
}
public int getNbrDette() {
return nbrDette;
}
public void setNbrDette(int nbrDette) {
this.nbrDette = nbrDette;
}
public int getIdStudent() {
return idStudent;
}
public void setIdStudent(int idStudent) {
this.idStudent = idStudent;
}
}
最佳答案
您尚未创建关系。您正在使用Java本机类型int
而不是其他类Student
。
@OneToOne( cascade= CascadeType.ALL)
@JoinColumn(name="Student_idStudent")
private int Student_idStudent;
如错误消息明确指出:
@OneToOne or @ManyToOne on 'univ_orientation.dz.Entity.cursusGlobale.Student_idStudent' references an unknown entity: int
,Student_idStudent被定义为一个int,而不是一个Entity。您将需要更多的东西@OneToOne( cascade= CascadeType.ALL)
@JoinColumn(name="Student_idStudent")
private Student student;
即使它是一个类,也将作为
Foreign Key
保留在数据库中的Student
表中。这是JPA提供的抽象的一部分。参考:JPA Hibernate One-to-One relationship