我正在尝试理解如何最好地在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),或者是否有更好的方法?
请注意,我不希望我的其他实体类公开连接的另一面(例如,BaseEntity上的List<AuditEvent> events )-但如果这是最干净的实现方式,那么它就足够了。
发布于 2010-05-28 22:19:21
映射的超类不是实体,因此不能是关联的一部分(如EJB-199中所述)。因此,要么:
使用Envers使您的
TABLE_PER_CLASS策略(请参阅this previous answer)
AuditableEntity entity in the hierarchy ),并使用最适合您使用的appropriate inheritance strategyhttps://stackoverflow.com/questions/2928916
复制相似问题