Sto provando a creare un livello di sospensione per uno schema di database su cui non ho praticamente alcun controllo. Semplificato, ci sono due tabelle.Hibernate: specificare le colonne in una relazione uno-a-molti
Tabella parent
ha due colonne importanti:
parent_id
, interi, chiave primaria, autoincrementedparent_code
, corda, chiave unica, generata da una scatola nera da qualche parte (diciamo che questo è un UUID per l'amor di sanità mentale)- Inoltre una serie di colonne di dati
Tabella child
ha due colonne importanti:
child_parent_id
, interi, chiave primaria, autoincrementedchild_parent_code
, string, che punta chiave esterna alparent_code
valore del livello superiore- Inoltre una serie di colonne di dati
Desidero poter chiamare Parent.getChilds() e ottenere una raccolta di oggetti figlio. Ma impostare i file di mapping di Hibernate sembra impossibile. Che cosa sta facendo con i mapping di seguito è la ricerca della tabella child
con il valore parent_id
(anziché parent_code
).
In Parent.hbm.xml
:
<set name="childs" inverse="true" lazy="true" table="child" fetch="select">
<key>
<column name="child_parent_code" not-null="true" />
</key>
<one-to-many class="foo.bar.Child" />
</set>
In Child.hbm.xml
:
<many-to-one name="parent" class="foo.bar.Parent" fetch="select">
<column name="child_parent_code" not-null="true" />
</many-to-one>
ho passato un'ora studiando attentamente attraverso la mia copia di Java Persistence con Hibernate, ma non riesco a capire come fare ciò che voglio È possibile?
L'attributo property-ref ha funzionato completamente. Grazie! – Plutor
Nessun problema, lieto che abbia aiutato. –
@DavidM Esiste un'annotazione di riferimento di proprietà in ibernazione? –