예를 들어 테이블 매핑과 관련된 엔터티의 경우 예: @ManyToOne, @OneToMany
A에 B가 추가되고 A가 삭제되면 B도 삭제되지만 B가 삭제되면 A는 영향을 받지 않습니다.
메인 엔터티인 A의 엔터티에 존재하는 B의 필드에 CASCADE를 추가합니다.
(예)
하나:N // 널빤지 : 답변
@Getter
@Setter
@Entity
public class Board extends Auditable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long boardId;
@Column(nullable = false)
private String title;
@Column(nullable = false)
private String body;
@Column
private Long vote;
@ManyToOne
@JoinColumn(name = "MEMBER_ID")
private Member member;
@OneToMany(mappedBy = "board", cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
private List<Answer> answers = new ArrayList<>();
}
하나:N //널빤지: 답변
@Getter
@Setter
@Entity
@NoArgsConstructor
public class Answer extends Auditable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long answerId;
@Column(length = 50)
private String title;
@Column
private String body;
@ManyToOne
@JoinColumn(name = "MEMBER_ID")
private Member member;
// @ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
@ManyToOne
@JoinColumn(name = "BOARD_ID")
private Board board;