在hibernate中保存@ManyToMany关系的反向所有者

在hibernate中保存@ManyToMany关系的反向所有者,hibernate,many-to-many,save,Hibernate,Many To Many,Save,我在用户和答案之间使用多对多关系。答案是所有者: @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "user_answer", joinColumns = { @JoinColumn(name = "answer_id", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "user_id", nullable =

我在用户和答案之间使用多对多关系。答案是所有者:

@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;
    }
如果不将相应的行保存到user\u answer中,则仅为我保存用户是无效的。用户实体的主键在保存时由db自动生成

保存反向所有者用户时,联接表未填充新行的原因是什么


谢谢大家!

hibernate参考资料中明确指出了解决方案

也就是说,我需要先保存反向所有者,然后保存所有者:

currentSession().save(inverseOwner);
currentSession().save(owner);
然后用相应的值填充联接表

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);
currentSession().save(inverseOwner);
currentSession().save(owner);