gpt4 book ai didi

java - 如何在 Hibernate ManyToMany Mapping 中更新链接表

转载 作者:行者123 更新时间:2023-11-28 23:52:09 25 4
gpt4 key购买 nike

我在数据表和用户表之间有一个 Hibernate ManyToMany 映射,由 data_user 表链接。现在我想更新数据表以向数据添加一个用户。如何更新链接表(data_user)为新用户添加一个条目?

我,先更新了用户集合:data.getUsers().add(user),然后在DAO层尝试了session.saveOrUpdate(data)。但是它删除了链接表中的所有内容。


更新 1:data_user(iddata_user,iddataroom,iduser) 是在数据库中手动创建的。

Update2:为数据和用户实现哈希码和等值。

更新 3:我更改为 CascadeType.MERGE。这会更新我的链接表。此外,当 CascadeType 为 ALL 时,我永远不会从 hibernate 正在尝试的数据更新用户表。

org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session.

PS:我对 hibernate 很陌生。

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;
}
...
}

最佳答案

您需要在您的实体中覆盖 equals() 和 hashCode(),否则您迟早会遇到问题,请参阅 this了解更多详情。

如果在覆盖 equals() 和 hashCode() 后问题仍然存在,您可以在关系的另一端添加一个 mappedBy,参见 this了解更多详情。

关于java - 如何在 Hibernate ManyToMany Mapping 中更新链接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32449698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com