Ho una relazione m: n come here, ad eccezione del fatto che alcune informazioni devono essere associate all'entità AuthorBook
. Quindi immagino, non ho bisogno di uno @JoinTable
e dovrei creare uno class AuthorBook
composto da un collegamento a ciascuno di Author
e Book
e le informazioni aggiuntive, giusto?Tabella di join di sospensione esplicita
ho provato come
@Entity
public class AuthorBook {
@Id @ManyToOne Author author;
@Id @ManyToOne Book book;
@LobOrWhatever AdditionalInformation additionalInformation;
}
e mi sono imbattuto in problemi (non ricordo più esattamente). Quindi ho introdotto uno @GeneratedId int id
e modificato i riferimenti a @NaturalId
. Funziona per lo più bene, ma funnily, mi costringe a passare allegato Author
e Book
a Session#byNaturalId
che non ha senso per me (ho gli id e le entità dovrebbero essere recuperate insieme). Ho anche provato
session.byNaturalId(AuthorBook.class)
.using("author.id", someAuthorId)
.using("book.id", someBookId)
.load();
ma questo è stato rifiutato dicendomi che "author.id" non id naturale (che in realtà è vero come l'id naturale è "autore", ma la sua "id" funziona altrettanto bene).
Guardando il web, trovo che tutti usano id invece di entità in tale tabella, quindi mi chiedo se sto cercando qualcosa di impossibile .... (o stupido).