나는 다른 레코드와의 관계에있는 데이터베이스에서 레코드를 제거하는 문제를 해결하는 방법을 궁금합니다. 다음은 예입니다. 이들은 사용자와 설명을 나타내는 두 클래스입니다.참조 된 엔터티를 제거합니다. 솔루션, 전술 등
@Entity
public class Comment {
@Id @GeneratedValue
@Getter @Setter
private long id;
@Getter @Setter
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "author_id")
private User commentAuthor;
@Getter @Setter
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "article_id")
private Article associatedArticle;
@Getter @Setter
@Column(columnDefinition="DATETIME")
@Temporal(TemporalType.TIMESTAMP)
private Date date;
@Getter @Setter
@Type(type="text")
private String commentText;
public Comment(User author, String text){
this.commentAuthor = author;
this.commentText = text;
this.date = new Date();
}
}
및 사용자 클래스 :
@Entity
public class User {
@Getter @Setter
private String username;
@Getter @Setter
private String password;
@Id
@Getter @Setter
private String email;
@Getter @Setter
private String role;
@Getter @Setter
@Column(columnDefinition="DATETIME")
@Temporal(TemporalType.TIMESTAMP)
private Date registerDate;
public User(String username, String password, String email){
this.username = username;
this.password = BCrypt.hashpw(password, BCrypt.gensalt());
this.email = email;
this.registerDate = new Date();
this.role = "USER";
}
public User(){};
당신은 내가 사용자가 주석을 추가 정보를 저장할 볼 수 있듯이. 그러나이 사용자를 삭제하려고한다고 가정 해 봅시다. 내가 외래 키 등에 대한 SQL 에러를 얻을 것이기 때문에 주석을 추가한다면 그렇게 할 수 없을 것이다. 나는 이것이 단지 나쁜 DB 디자인 일 뿐이라는 것을 확신하지만이 문제를 어떻게 해결할 지 확신하지 못한다. 분명히 사용자를 삭제할 때 자신의 코멘트를 유지하고 사용자 이름 대신 "사용자 삭제"와 같은 정보를 보여줄 것입니다. 적절한 방법은 무엇입니까?