Non sono sicuro di aver capito questo strano diagramma ... RegionLanguage ha qualche tipo di chiave esterna che punta a Region.id, lo prendo? Se Region ha solo una colonna (come mostrato nel 'diagramma'), puoi semplicemente mappare solo 'RegionLanguage' e avrai una sola entità come vuoi --- nessuna informazione persa;).
Ma seriamente, come vorresti mapparlo? Vuoi avere qualcosa di simile:
class Region {
//.. the missing fields not shown in diagram
List<String> languages; // take only language to avoid creating separate entity for region language
}
o qualcosa di simile:
class RegionInnerJoinRegionLanguage {
// all fields from Region
// all fields from RegionLanguage
}
In ogni caso non hai detto come il resto delle tabelle sono uniti con le tabelle i18n. Dalla tua descrizione, suppongo, che tutte le tabelle abbiano fk su RegionLanguage. Non sono sicuro di quale sia la tabella della regione utilizzata nel grande schema delle cose. Immagino che sia solo per il raggruppamento di lingue ... Immagino questa "modella" Svizzera (una "regione" 4 lingue) ... Ma cosa farai con le lingue parlate in diverse regioni? Avrai diverse lingue in francese, inglese, ecc. (Una per ogni regione) e tutti i dati moltiplicati per ognuna di quelle?
So che non puoi chiedere questo ... Penso solo che hai semplificato la tua struttura dati per questa domanda ... Tanto che è difficile indovinare cosa vuoi veramente raggiungere.
In ogni caso, se si desidera utilizzare l'elenco delle stringhe approccio, si può provare questo:
@ElementCollection
@CollectionTable(name="RegionLanguage",
[email protected](name="regionID") // or whatever... it's not on your diagram.
)
@Column(name="langage")
private List<String> langages;
io continuo a non capire perché si vuole mettere entrambe le tabelle in un unico soggetto .. Se si tratta di dati "di sola lettura", si potrebbe provare a creare una vista e mapparla --- sempre una "via d'uscita";). Ma è (entrambi, in effetti) un po 'troppo complicato, secondo me --- ti morderà in futuro. Il mio consiglio è di andare con la "semplice mappatura OneToMany".
Hai trovato una soluzione per questo problema? E se sì, ti dispiacerebbe condividerlo (come risposta)? Stiamo affrontando lo stesso problema, non abbiamo ancora trovato una soluzione soddisfacente (la maggior parte risulta in query N + 1, che sicuramente non vogliamo). – wimvds
Quale provider JPA stai utilizzando? – siebz0r
Non capisco completamente perché una semplice associazione @OneToMany tra Region e RegionLanguage non funzioni per te? –