Hibernate JPA-将实体映射到多个其他实体

Hibernate JPA-将实体映射到多个其他实体,hibernate,inheritance,jpa,orm,polymorphism,Hibernate,Inheritance,Jpa,Orm,Polymorphism,我有两个实体可以被用户评论(比如说:新闻和文章)。是否可以使用一个注释实体并将其附加到两个实体 我通过创建一个抽象超类(AbstractCommentableEntity)来尝试它,该类处理与注释的关系(将是CommentableEntity1和CommentableEntity2)。然后,news和article实体将扩展这个类,并且可以向它们附加注释。查看我的图像和代码 但是如果我这样实现它,我会得到一个映射异常。我想这是因为我试图映射一个@MappedSuperclass注释类。有没有办法

我有两个实体可以被用户评论(比如说:新闻和文章)。是否可以使用一个注释实体并将其附加到两个实体

我通过创建一个抽象超类(
AbstractCommentableEntity
)来尝试它,该类处理与注释的关系(将是
CommentableEntity1
CommentableEntity2
)。然后,news和article实体将扩展这个类,并且可以向它们附加注释。查看我的图像和代码

但是如果我这样实现它,我会得到一个映射异常。我想这是因为我试图映射一个@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;
    }
}

您不应该使关联具有双向性:因此,注释将是一个通用实体,可以附加到任何类型的实体。
新闻
文章
实体都有一组评论

默认情况下,这将使用两个连接表进行映射:一个链接注释和新闻,另一个链接注释和文章

如果您确实希望关联是双向的,那么您可以使用一个
AbstractComment
实体,它有两个子实体:
newcomment
articleccomment
NewsComment
将与
News
具有双向多通关联,
ArticleComment
将与
Article
具有双向多通关联

public class CommentabeEntity2 extends AbstractCommentableEntity{

}