Spring / hibernate / MySQL不会保存在辅助表状态中

时间:2016-04-14 18:13:19

标签: mysql spring hibernate many-to-many

我有3个表Users,Archivements和ArchivemetnsUSers。这是多对多的关系。

我的问题是我想在我的数据库中保存一个新用户,但是,我不想保存/更新分配给用户的存档,因为我只有N个预先存在的存档。

然后,当我为我的用户保存hibernate会话时...我得到一个例外:所选的存档存在于DataBase中,并且hibernate不能保存重复的PrimaryKey。

我如何避免这个问题?

任何注释?还是骗术?

2 个答案:

答案 0 :(得分:0)

要避免此问题,您必须从数据库中获取存档并将其分配给您创建的新用户,例如:

//fetching the Archivement:
Archivements a=yourDaoClass.getArchivementById(id);

//creating a new user
Users u=new Users();
u.setName("someOne");

//assign the new user to the existing ashivement
List<User> users=a.getUsers();
users.add(u);
a.setUsers(users);
session.saveOrUpdate(a);

这必须将现有的Achivement分配给新用户。

答案 1 :(得分:0)

最后,问题是我需要获取存档,将存档设置为用户并在ONE TRANSACTION中保存用户实例,因为hibernate知道这些存档寄存器存在于DataBase中。