Witam,
mam takie dwie klasy w relacji many to many:
@Entity
@Table(name="user_tab", schema="acl")
public class User {
@Id @GeneratedValue @Column(name = "user_id")
private Long user_id;
@Email @NotEmpty
private String email;
private String password;
@ManyToMany(mappedBy="users")
private Set<Company> companies = new HashSet<company>();
public Long getUser_id() {
return user_id;
}
public void setUser_id(Long user_id) {
this.user_id = user_id;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Set<Company> getCompanies() {
return companies;
}
public void setCompanies(Set<Company> companies) {
this.companies = companies;
}
@Override
public String toString() {
return user_id + "/" + name + " " + surname;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof User)) return false;
User user = (User) o;
return email.equals(user.email);
}
@Override
public int hashCode() {
return email.hashCode();
}
}
@Entity
@Table(name="company_tab", schema="app")
public class Company {
@Id @GeneratedValue @Column(name = "company_id")
private Long company_id;
@NotEmpty
private String name;
@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(name="company_user_tab",
joinColumns={@JoinColumn(name="company_id")},
inverseJoinColumns={@JoinColumn(name="user_id")})
private Set<User> users = new HashSet<User>();
public Long getCompany_id() {
return company_id;
}
public void setCompany_id(Long company_id) {
this.company_id = company_id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
}
Problem polega na tym, ze jak juz mam jakas firme która zawiera już przypisania do jednego usera i w momencie tworzenia nowego usera i próby przypisania go do firmy to podczas aktualizacji firmy o powiazanie do nowego usera mam duplicate key na tabeli company_user_tab bo próbuje jeszcze raz wrzucić powizanie dla pierwszego usera który jest już powiazany w tej tabeli