Как исправить «Невозможно найти столбец с логическим именем» в Java, Hibernate - PullRequest
0 голосов
/ 16 января 2019

Я получаю сообщение об ошибке «Не удается найти столбец с логическим именем: dniNumeros в org.hibernate.mapping.Table (alumno) и связанных с ним надстроек и вторичных таблиц» при использовании IdClass

Я попытался использовать 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)

);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...