Hibernate - update obiektu w relacji many to many

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1