0
私は、データベースからレコードを削除するという問題を、他のレコードとの関係で解決する方法を知りたいと思います。ここに例があります。それらはユーザーとコメントを表す2つのクラスです。参照先のエンティティを削除しています。ソリューション、戦術など
@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デザインだと確信していますが、私はこの問題を解決する方法がわかりません。明らかにユーザーを削除するとき、私は彼のコメントを残したいと思うし、彼のユーザー名の代わりに "ユーザー削除"のような情報を表示するだけです。それを行う正しい方法は何ですか?