在我的項目我有用戶和公司實體:休眠雙向多對多刪除問題
@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<CompanyDetails> 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<UserDetails> 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`))
您能幫我解決此問題嗎?謝謝。
它不僅從關係表和用戶表中刪除我的用戶:( – sidlejinks 2013-03-01 14:14:53
對不起,我錯過了我的答案中的一件事是它是一個多對多的。所以級聯刪除將無法正常工作。那麼問題是,負責的關係是'UserDetails'類。這就是爲什麼它的工作原理上的一種方式,而不是在另一個。刪除公司之前,你可能必須從'userCompanies'集刪除此公司在'companyUsers'的每個UserDetails'集合中。 – benzonico 2013-03-01 15:03:33
我不能再有任何解決方案嗎? – sidlejinks 2013-03-01 15:14:47