ユーザーがコメントできるエンティティが 2 つあります (例: ニュースと記事)。1 つのコメント エンティティを使用して、両方のエンティティにアタッチすることはできますか?
AbstractCommentableEntity
コメントとの関係を処理する抽象スーパークラス( )を作成して試してみました( CommentabeEntity1
andになりますCommentabeEntity2
)。ニュースと記事のエンティティは、このクラスを拡張し、コメントを添付できるようになります。私のイメージと私のコードを見てください。
しかし、そのように実装すると、マッピング例外が発生します。@MappedSuperclass アノテーション付きクラスをマップしようとしたためだと思います。これを実行する方法はありますか?
私のコメントエンティティは次のようになります。
@Entity
public class Comment {
private AbstractCommentableEntity commentableEntity;
@ManyToOne
@JoinColumn
public AbstractCommentableEntity getCommentableEntity() {
return commentableEntity;
}
public void setCommentableEntity(AbstractCommentableEntity commentableEntity) {
this.commentableEntity = commentableEntity;
}
}
コメント可能なエンティティの抽象スーパークラスは次のようになります。
@MappedSuperclass
public abstract class AbstractCommentableEntity {
Set<Comment> comments = new HashSet<Comment>();
@OneToMany(mappedBy = "commentableEntity")
public Set<Comment> getComments() {
return comments;
}
public void setComments(Set<Comment> comments) {
this.comments = comments;
}
}
そして、特定のエンティティはそれを次のように拡張します:
public class CommentabeEntity2 extends AbstractCommentableEntity{
}