0

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 によって自動生成されます。

逆所有者ユーザーを保存するときに結合テーブルに新しい行が入力されない理由は何ですか?

ありがとうございました!

4

1 に答える 1