У меня есть три таблицы, которые я хочу связать
Студент (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 не может ссылаться на не первичный ключ