私のプロジェクトには、ユーザーと会社のエンティティがあります。
@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`))
この問題の解決を手伝っていただけますか? ありがとうございました。