User と Answer の間に多対多の関係を使用します。答えは所有者です:
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "user_answer", joinColumns = { @JoinColumn(name = "answer_id", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "user_id", nullable = false, updatable = false) })
public Set<User> getUsers() {
return users;
}
ユーザーは逆所有者です:
@ManyToMany(mappedBy = "users", fetch = FetchType.LAZY, targetEntity = Answer.class)
public Set<Answer> getAnswers() {
return answers;
}
所有者の Answer を保存し、テーブル user_answer に新しいレコードを結合するコードは問題ありません。これは逆所有者を保存するためのコードです
User user=createUser();
//answer with id 6 is already in db
Answer answer = new Answer(6);
answer.getUsers().add(user);
user.getAnswers().add(answer);
currentSession().save(user);
対応する行をuser_answerに保存せずに、私だけのユーザーを保存することはできません。User エンティティの主キーは、保存時に db によって自動生成されます。
逆所有者ユーザーを保存するときに結合テーブルに新しい行が入力されない理由は何ですか?
ありがとうございました!