Employee、Boss、Address の 3 つのテーブルがあります。
この場合、Employee と Boss は同じ Address を共有します。Employee で EntityManager.remove を呼び出すと、Boss がまだ必要としているために削除できない Address を削除しようとするため、Integrity Constraint 例外が発生します。誰もアドレスを使用していない場合は、アドレスを削除したいと思います。Address からオーファンを削除し、整合性制約を回避できるようにするには、注釈をどのように表示する必要がありますか?
例外 =
Internal Exception: java.sql.SQLIntegrityConstraintViolationException: DELETE on
table 'Employee' caused a violation of foreign key constraint 'Boss....
コード =
public class Employee {
@OneToMany(targetEntity = Address.class, orphanRemoval = true,cascade = {
CascadeType.ALL
} fetch=FetchType.EAGER)
@JoinTable(name = "Employee_Address")
@XmlElement(required = true)
@OrderColumn
protected List<Address> addresses;
}
public class Boss {
@OneToMany(targetEntity = Address.class, orphanRemoval = true, cascade = {
CascadeType.ALL
}fetch=FetchType.EAGER)
@JoinTable(name = "Boss_Address")
@XmlElement(required = true)
@OrderColumn
protected List<Address> addresses;
}
Address クラスは、上司や従業員について何も知りません。