Hibernate - 持久的多态连接

Mar*_*itt 7 java hibernate

我试图了解如何在hibernate中最好地实现多态一对多.

例如:

@MappedSuperclass
public class BaseEntity  {
    Integer id;
    // etc...
}

@Entity
public class Author extends BaseEntity {}

@Entity
public class Post extends BaseEntity {}

@Entity
public class Comment extends BaseEntity {}
Run Code Online (Sandbox Code Playgroud)

现在,我还要保留审计信息,具体如下:

@Entity
public class AuditEvent {
    @ManyToOne // ?
    BaseEntity entity;
}
Run Code Online (Sandbox Code Playgroud)

什么是适当的映射auditEvent.entity?另外,Hibernate将如何实际坚持这一点?将一系列连接的表的生成(AuditEvent_Author,AuditEvent_Post,AuditEvent_Comment),或者是有没有更好的办法?

注意,我宁愿不让我的其他实体类暴露连接的另一面(例如,List<AuditEvent> eventson BaseEntity) - 但如果这是最干净的实现方式,那么它就足够了.

Pas*_*ent 5

映射的超类不是实体,因此不能成为关联的一部分(如EJB-199中提醒的那样).所以要么: