Sto cercando di capire come implementare al meglio uno polimorfico one-to-many in modalità ibernazione.Ibernazione: unione polimorfica persistente
Esempio:
@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 {}
E ora, mi piacerebbe a persistere anche informazioni di controllo, con la seguente classe:
@Entity
public class AuditEvent {
@ManyToOne // ?
BaseEntity entity;
}
Qual è la mappatura appropriata per auditEvent.entity
? Inoltre, come andrà Hibernate a persistere? Verrà generata una serie di tabelle di join (AuditEvent_Author
, AuditEvent_Post
, AuditEvent_Comment
) o c'è un modo migliore?
Nota, preferirei che le altre classi di entità non espongano l'altro lato del join (ad esempio, List<AuditEvent> events
su BaseEntity
), ma se questo è il modo più semplice per implementare, sarà sufficiente.