【发布时间】:2015-08-21 10:47:31
【问题描述】:
我对休眠和@ManyToMany 注释有疑问。请看两个实体类:
公司实体:
@ManyToMany
@JoinTable(name="company_user_tab",
joinColumns={@JoinColumn(name="company_id")},
inverseJoinColumns={@JoinColumn(name="user_id")})
private Set<User> users = new HashSet<User>();
... getters and setters
用户实体:
@ManyToMany(mappedBy="users")
private Set<Company> companies = new HashSet<Company>();
... getters and setters
场景: 我创建了第一个用户和第一个公司并正确连接它们。
当我创建新用户并尝试用新用户更新现有公司时出现问题。我在 company_user_tab 上收到数据库错误:“重复键值违反唯一约束”
看起来像休眠插入再次加入表第一个用户女巫与公司正确关联。
我如何更新对象?
entityManager.merge(object);
当然,我在用户到公司和公司到用户之前添加例如:
user.getCompanies().add(company);
company.getUsers().add(user);
感谢您的建议。
【问题讨论】:
-
看起来你没有正确设置你的级联。尝试在您的套装上使用
@Cascade({CascadeType.MERGE})。那应该可以解决这个问题。
标签: java hibernate many-to-many