Я пытаюсь сопоставить 3 объекта: вопрос, ответ и вопросдисплейруле. Вопрос имеет много ответов и множество правил отображения вопросов, каждое из которых относится к одному вопросу. QuestionDisplayRule имеет один вопрос, один ответ и одно поле со строковым значением. Таблица db для QuestionDisplayRule выглядит следующим образом:
create table question_display_rule(
question_id int,
answer_id int,
answer_value varchar(128)
);
Естественно, question_id и answer_id — это ПК.
Отображение JPA выглядит следующим образом:
@Embeddable
public class QuestionDisplayRulePK implements Serializable {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="question_id", insertable = false, updatable = false)
private Question question;
@ManyToOne
@JoinColumn(name = "answer_id", insertable = false, updatable = false)
private Answer answer;
}
а также
@Entity
@Table(name = "question_display_rule")
public class QuestionDisplayRule implements Serializable {
@EmbeddedId
private QuestionDisplayRulePK id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="question_id", insertable = false, updatable = false)
private Question question;
@ManyToOne
@JoinColumn(name = "answer_id", insertable = false, updatable = false)
private Answer answer;
@Column(name="answer_value")
private String answerValue;
}
Проблема в том, что он отлично загружает QuestionDisplayRules, если я добавляю записи вручную в БД, но не сохраняю их. Ни ошибок, ничего..
Тестовый код:
QuestionDisplayRulePK qPK = new QuestionDisplayRulePK();
qPK.setQuestion(q);
qPK.setAnswer(a);
QuestionDisplayRule qr = new QuestionDisplayRule(qPK, "Yes");
qr.setAnswerValue("whateva..");
....
// DAO code looks like: getSession().saveOrUpdate(qr);
Любые идеи? Спасибо!