Hibernate Двунаправленный ManyToMany удалить проблему
В моем проекте есть объекты для пользователей и компаний:
@Entity
@Table(name = "users")
public class UserDetails {
@Id
@GeneratedValue
@Column(name = "user_id")
private int id;
@Column(name = "first_name")
@NotEmpty
@Size(min = 2, max = 20)
private String firstName;
@ManyToMany(cascade = CascadeType.REFRESH)
@JoinTable(name = "users_companies",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "company_id"))
private Set userCompanies = new HashSet();
//getters and setters of course...
}
@Entity
@Table(name = "companies")
public class CompanyDetails {
@Id
@GeneratedValue
@Column(name = "company_id")
private int id;
@Column(name = "name")
@NotEmpty
@Size(min = 1, max = 255)
private String name;
@ManyToMany(mappedBy = "userCompanies")
private Set companyUsers = new HashSet();
}
Я назначаю пользователя для рассматриваемой компании и затем пытаюсь удалить. Когда я удаляю пользователя, все в порядке - пользователь удален, запись из 'users_companies' таблица тоже удалена и компания остается (по необходимости). Но когда я пытаюсь удалить компанию, у меня возникает трассировка стека со следующей основной причиной:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`d_torianik/users_companies`, CONSTRAINT `FK447D806437A764EB` FOREIGN KEY (`company_id`) REFERENCES `companies` (`company_id`))
Не могли бы вы помочь мне решить эту проблему? Спасибо.