我遇到了hibernate和@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上收到数据库错误:“重复键值违反了唯一约束”
看起来像hibernate插入再次连接表第一个用户女巫与公司正确关联。
我如何更新对象?
entityManager.merge(object);
当然,我在用户之前添加到公司和公司,例如:
user.getCompanies().add(company);
company.getUsers().add(user);
感谢您的建议。
答案 0 :(得分:0)
试试这个代码
@ManyToMany(cascade = {CaseCadeType.ALL})
@JoinTable(名称= “company_user_tab”,
joinColumns = {@ JoinColumn(名称= “COMPANY_ID”)},
inverseJoinColumns = {@ JoinColumn(名称= “USER_ID”)})
private Set users = new HashSet();
......吸气鬼和二传手