Исключение гибернации с аннотацией SecondaryTable - PullRequest
0 голосов
/ 20 мая 2019

У меня есть три таблицы, которые я хочу связать
Студент (id, имя, фамилия) -> Магазины Сведения об ученике
Вопрос (идентификатор, вопрос, ответ) -> Сохраняет вопрос с правильным ответом
Ответ (id, qid, answer) -> Сохраняет идентификатор вопроса и ответ, данный учеником
Свяжет ученика и ответ с помощью @OneToMany
Можем ли мы иметь с @OneToMany атрибуты, отличные от FK, чтобы я мог включить в него идентификатор вопроса и ответ на него

@Entity
@Table(name = "answer")
@SecondaryTable(name = "question",pkJoinColumns = {
        @PrimaryKeyJoinColumn(name="qid",referencedColumnName = "qid")})
public class AnswerEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Column(name = "qid")
    private long qid;

    @Column(name = "answer")
    private String answer;
}


@Entity
@Table(name = "question")
@Inheritance(strategy = InheritanceType.JOINED)
@Component
public class QuestionEntity implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "qid", updatable = false, nullable = false, unique = true)
    private long qid;
...
}
@Entity
@Table(name="student")
public class Student{
 ...
@OneToMany(fetch = FetchType.EAGER)
    @Cascade({org.hibernate.annotations.CascadeType.DELETE, org.hibernate.annotations.CascadeType.SAVE_UPDATE})
    @JoinTable(name = "has_answered", joinColumns = {@JoinColumn(name = "student_id", referencedColumnName = "uid")}, inverseJoinColumns = {@JoinColumn(name = "answer_id", referencedColumnName = "id")})
    private List<AnswerEntity> answerEntityList;
...
}

Я получаю это сообщение об ошибке -
org.hibernate.AnnotationException: SecondaryTable JoinColumn не может ссылаться на не первичный ключ

...