我有3个表Users,Archivements和ArchivemetnsUSers。这是多对多的关系。
我的问题是我想在我的数据库中保存一个新用户,但是,我不想保存/更新分配给用户的存档,因为我只有N个预先存在的存档。
然后,当我为我的用户保存hibernate会话时...我得到一个例外:所选的存档存在于DataBase中,并且hibernate不能保存重复的PrimaryKey。
我如何避免这个问题?
任何注释?还是骗术?
答案 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中。