3
봄, JPA와 최대 절전 모드를 사용하고 있습니다. JPA 엔티티 관계 : 삭제 캐스케이드
내가 가지고 다음 엔터티 :@Entity
@Table(name = "Product")
public class Product {
@Id
private Integer productId;
@ManyToOne(cascade = CascadeType.ALL)
@OnDelete(action = OnDeleteAction.CASCADE)
@JoinColumn(name = "Supplier_ID")
private Supplier supplier;
...
}
이제
@Entity
@Table(name = "Supplier")
public class Supplier {
@Id
@Column(name = "Supplier_ID", nullable = false)
private Integer supplierId;
...
}
하고, 내 질문에 주어진 스키마입니다
- 내가 아이에서 행을 삭제 (즉, 제품), 공급자도 삭제됩니까?
- 은 또는, 부모 (예. 공급자는) 다음로 삭제가 모든 자식 '제품'
감사를 삭제 계단식 경우에만입니다.
감사합니다. 그렇다면 CasacadeType.ALL 대신 무엇을 사용해야합니까? 나는 공급자가 삭제 될 때 제품을 삭제하고 싶다, 다른 방법으로 삭제하지 말라 ?? – JazB
먼저, 당신은 계단식으로 누가 삭제해야하는지 * Hibernate 또는 데이터베이스를 결정해야한다. 데이터베이스 인 경우 @OnDelete (action = Cascade)가 솔루션입니다. Hibernate 인 경우 cascade = REMOVE 또는 cascade = ALL을 연결의 다른 쪽 * (즉, @OneToMany 주석의 Supplier 엔티티)에 넣어야합니다. 이 연관성을 양방향으로 만들고 싶지 않다면, 공급 업체의 모든 제품을 찾아서 삭제 한 다음 공급 업체를 삭제하여 직접 캐스케이드를 적용해야합니다. –
확인. @OnDelete (action = OnDeleteAction.CASCADE) 만 제거하면 어떻게됩니까? 공급자가 삭제되면 produst가 삭제됩니까 ?? – JazB