使用IdClass时出现错误“无法在逻辑名称中找到列:org.hibernate.mapping.Table(alumno)及其相关的超表和辅助表中的dniNumeros”
我尝试改用EmbeddedId,但遇到相同的错误。该列显然存在于我的数据库中,因为当我从其中删除IdClass行时,代码工作得很好
@Entity
@Table(name="dificultadalumnoejercicio")
@IdClass(DificultadAlumnoEjercicioPK.class)
public class DificultadAlumnoEjercicio implements Serializable {
private static final long serialVersionUID = -111454640507305257L;
@Id
@ManyToOne(cascade=CascadeType.MERGE)
@JoinColumns ({
@JoinColumn(name="alumnoDNINumeros", referencedColumnName="dniNumeros"),
@JoinColumn(name="alumnoDNILetra", referencedColumnName="dniLetra")
})
private Alumno alumno;
@Id
@OneToOne(cascade=CascadeType.MERGE)
@JoinColumn(name="ejercicioID", referencedColumnName="id")
private Ejercicio ejercicio;
@ManyToOne(cascade=CascadeType.MERGE)
@JoinColumn(name="dificultadID", referencedColumnName="id")
private Dificultad dificultad;
// Constructors / Getters / Setters
}
这是我的IdClass
@Embeddable
public class DificultadAlumnoEjercicioPK implements Serializable {
private static final long serialVersionUID = 5559503979252689702L;
public Alumno alumno;
public Ejercicio ejercicio;
// Constructors / Getters / Setters
}
这是我的数据库代码:
CREATE TABLE `dificultadAlumnoEjercicio` (
`alumnoDNINumeros` CHAR(8),
`alumnoDNILetra` CHAR,
`ejercicioID` INT,
`dificultadID` INT NOT NULL,
PRIMARY KEY (alumnoDNINumeros, alumnoDNILetra, ejercicioID),
FOREIGN KEY (alumnoDNINumeros, alumnoDNILetra) REFERENCES alumno(dniNumeros, dniLetra),
FOREIGN KEY (dificultadID) REFERENCES dificultad(id),
FOREIGN KEY (ejercicioID) REFERENCES ejercicio(id)
);
CREATE TABLE `alumno` (
`dniNumeros` CHAR(8),
`dniLetra` CHAR,
PRIMARY KEY (dniNumeros, dniLetra),
FOREIGN KEY (dniNumeros, dniLetra) REFERENCES persona(dniNumeros, dniLetra)
);