我有兩個可以由用戶評論的實體(可以說例如:新聞和文章)。是否可以使用一個評論實體並將它們附加到這兩個實體?JPA - 將實體映射到多個其他實體
我試着通過創建抽象超類(AbstractCommentableEntity
)來處理與註釋的關係(將是CommentabeEntity1
和CommentabeEntity2
)。然後新聞和文章實體將擴展這個類,並且可以給它們附上評論。看到我的圖片以及我的代碼。
但是,如果我這樣實現它,我會得到一個映射異常。我認爲這是因爲我試圖映射一個@MappedSuperclass註釋類。有什麼辦法可以讓我跑步嗎?
我的評論entiy應該是這樣的:
@Entity
public class Comment {
private AbstractCommentableEntity commentableEntity;
@ManyToOne
@JoinColumn
public AbstractCommentableEntity getCommentableEntity() {
return commentableEntity;
}
public void setCommentableEntity(AbstractCommentableEntity commentableEntity) {
this.commentableEntity = commentableEntity;
}
}
爲commentable實體的抽象超會是什麼樣子:
@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{
}