Così ho fatto questa domanda ieri, ma i pali della porta sono cambiate e la questione è diversa:Hibernate/JPA relazione molti a molti attraverso un tavolo di unirsi e di una chiave composta, numero unico vincolo
Hibernate/JPA Collection of Elements with Many to Many relationship?
Voglio sapere se è possibile creare entità che modelleranno la mia relazione richiesta in modo che Hibernate crei il mio schema quando accendo la mia applicazione.
Il rapporto che voglio assomiglia a questo:
Il fatto è che la tabella Join può effettivamente contenere le righe che non puntano a tutti gli elementi. La struttura rappresenta la categorizzazione degli elementi in base alla coppia "tipo" e "valore" e vengono immessi nel sistema al di fuori di questa particolare applicazione.
Quello che vorrei essere in grado di fare è impostare la mia entità di ibernazione dell'elemento per contenere un elenco di categorie, tramite una mappatura, in modo che io possa effettivamente vedere quali categorie il mio elemento appartiene a E in modo che la sospensione crei la tabella per me.
Ecco quello che ho finora: la mappatura presente nella mia classe Elemento Entity come questo:
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "ELEMENT_ELEMENTCATOGORY", joinColumns = {
@JoinColumn(name = "type", referencedColumnName = "type"),
@JoinColumn(name = "value", referencedColumnName = "value") })
@Column(name = "category")
public List<ElementCategory> getCategories() {
return categories;
}
Questo fa la maggior parte di ciò che voglio, che crea le mie tabelle di cui sopra, esattamente come io li voglio barra una cosa, c'è un vincolo univoco aggiunto alla tabella degli elementi sulla coppia (tipo, valore). Non voglio questo perché più elementi possono avere lo stesso tipo e coppia di valori, devo essere in grado di fermare il vincolo univoco dall'inizio, ma non riesco a capire come con la mappatura corrente, posso fare questo? Mi manca il punto di una relazione da molti a molti?
Continuo a pensare che sia necessario un inverseJoinColumn per includere l'id di ElementCategory nella tabella di join. – bvanvelsen
Potrebbe essere che suoni più logici che tipo e valore siano un'entità? quindi l'id di questo tipo, entità di valore è una joincolumn del jointable – bvanvelsen
L'ID è implicito nel fatto che ho un insieme di categorie di elementi, come con qualsiasi Set. Come ho già detto, le tabelle vengono impostate correttamente e questo include il collegamento tra "categoria" nella tabella di join e "id" nella tabella ElementCategory. Pensi che il join inverso rimuoverà il vincolo univoco dalla tabella degli elementi? Lo proverò. – Link19