Spring/hibernate/MySQL 不保存在辅助 table 状态
Spring/hibernate/MySQL doesnt save in auxiliar table states
我有 3 个表 Users、Archivements 和 ArchivemetnsUSers。这是一个多对多的关系。
我的问题是我想在我的数据库中保存一个新用户,但是,我不想 save/update 分配给用户的存档,因为我只有 N 个预先存在的存档。
然后,当我去为我的用户保存休眠会话时...我得到一个异常:选定的存档存在于数据库中,而休眠无法保存重复的主键。
如何避免这个问题?
有注释吗?还是把戏?
为避免此问题,您必须从数据库中获取存档并将其分配给您创建的新用户,例如:
//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);
这必须将现有成就分配给新用户。
最后,问题是我需要获取存档,将存档设置为用户并在一个事务中保存用户实例,以便休眠了解这些存档寄存器存在于数据库中。
我有 3 个表 Users、Archivements 和 ArchivemetnsUSers。这是一个多对多的关系。
我的问题是我想在我的数据库中保存一个新用户,但是,我不想 save/update 分配给用户的存档,因为我只有 N 个预先存在的存档。
然后,当我去为我的用户保存休眠会话时...我得到一个异常:选定的存档存在于数据库中,而休眠无法保存重复的主键。
如何避免这个问题?
有注释吗?还是把戏?
为避免此问题,您必须从数据库中获取存档并将其分配给您创建的新用户,例如:
//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);
这必须将现有成就分配给新用户。
最后,问题是我需要获取存档,将存档设置为用户并在一个事务中保存用户实例,以便休眠了解这些存档寄存器存在于数据库中。