Estoy tratando de comprender cómo implementar mejor un uno-a-uno polimórfico en hibernación.Hibernate: polimórficos persistentes se une a
Ej:
@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 {}
Y ahora, me gustaría que persista también información de auditoría, con la siguiente clase:
@Entity
public class AuditEvent {
@ManyToOne // ?
BaseEntity entity;
}
¿Cuál es la asignación apropiada para auditEvent.entity
? Además, ¿cómo Hibernate realmente persistirá? ¿Se generaría una serie de tablas de unión (AuditEvent_Author
, AuditEvent_Post
, AuditEvent_Comment
), o hay una forma mejor?
Nota: Prefiero que mis otras clases de entidad no expongan el otro lado de la unión (p. Ej., List<AuditEvent> events
en BaseEntity
), pero si esa es la forma más limpia de implementarla, será suficiente.