【发布时间】:2015-09-08 05:15:04
【问题描述】:
我在 data_user 表链接的数据表和用户表之间有一个 Hibernate ManyToMany 映射。现在我想更新数据表以向数据中再添加一个用户。如何更新链接表(data_user)为新用户增加一个条目?
我,先更新了用户集合:data.getUsers().add(user),然后在DAO层尝试了session.saveOrUpdate(data)。但它删除了链接表中的所有内容。
Update1:data_user(iddata_user,iddataroom,iduser) 是在数据库中手动创建的。
Update2:为数据和用户实现了哈希码和等于。
更新 3:我改为CascadeType.MERGE。这会更新我的链接表。此外,当 CascadeType 为 ALL 时,我永远不会从休眠尝试的 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;
}
...
}
【问题讨论】:
-
我认为您需要向我们展示更多代码/架构。