我在data_user表链接的数据表和用户表之间有一个Hibernate ManyToMany映射。现在我想更新数据表以向数据添加一个用户。如何更新链接表(data_user)以为新用户添加一个条目?
我首先更新了用户集:data.getUsers().add(user)
,然后在DAO层中尝试了session.saveOrUpdate(data)
。但它删除了链接表中的所有内容。
Update1 :在数据库中手动创建了data_user(iddata_user,iddataroom,iduser)。
Update2 :为数据和用户实施了Hashcode和equals。
更新3 :我改为CascadeType.MERGE
。这会更新我的链接表。此外,当CascadeType为ALL时,我永远不会从hibernate尝试的Data更新User表。
org.hibernate.NonUniqueObjectException:与...不同的对象 相同的标识符值已与会话关联。
PS:我对休眠很新。
public class Data {
private int dataId;
private Data parentData;
private Set<User> users;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "data_user", joinColumns = { @JoinColumn(name = "iddata") },
inverseJoinColumns = { @JoinColumn(name = "iduser") })
public Set<User> getUsers() {
return users;
}
...
}