我试图了解如何在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 {}
现在,我想保留以下类的审核信息:
@Entity public class AuditEvent { @ManyToOne // ? BaseEntity entity; }
什么是适当的映射auditEvent.entity?另外,Hibernate实际上将如何坚持下去呢?将一系列连接的表的生成(AuditEvent_Author,AuditEvent_Post,AuditEvent_Comment),或者是有没有更好的办法?
auditEvent.entity
AuditEvent_Author
AuditEvent_Post
AuditEvent_Comment
请注意,我宁愿不要让我的其他实体类暴露联接的另一面(例如List<AuditEvent> eventson BaseEntity),但是,如果这是最干净的实现方式,那就足够了。
List<AuditEvent> events
BaseEntity
映射的超类不是实体,因此不能成为关联的一部分(如EJB-199中所提醒)。所以:
TABLE_PER_CLASS
AuditableEntity