Sospensione uno a molti Lista Mapping unidirezionale
-
29-09-2019 - |
Domanda
Non ho rapporti one-to-many
tra genitore e figlio oggetti Java. Gli usi dell'oggetto padre java.util.List
che i negozi più oggetti figlio. Il problema che sto vivendo è quando si aggiorna l'oggetto padre dopo ho aggiunto uno o più oggetti del bambino (s) al List
nel genitore. Sto usando il metodo saveOrUpdate
per salvare o aggiornare il genitore. Funziona bene se sto salvando una nuova istanza del genitore, ma dopo averlo salvato, cerco di aggiungere oggetto figlio (s) nella List
genitore e quindi tentare di chiamata saveOrUpdate
sull'oggetto genitore, ma nessuna voce di oggetto figlio ( s) get persistente nel database. Vorrei solo alcune indicazioni. Nota ??strong>: non sto usando le annotazioni.
un frammento del Parent.hbm.xml , che definisce l'uno-a-molti unidirezionale:
<list name="children" cascade="all">
<key column="parent_id"/>
<index column="idx"/>
<one-to-many class="Child"/>
</list>
Soluzione
Ho appena cercato di riprodurre questo esempio e ha funzionato bene per me.
Ecco le mie mappature:
<hibernate-mapping package="com.example.domain">
<class name="com.example.domain.Parent" table="PARENT">
<id name="id" column="parent_id" access="field">
<generator class="increment" />
</id>
<property name="name" column="parent_name" access="field" />
<list name="children" access="field" cascade="all">
<key column="parent_id" not-null="true" />
<index column="idx" />
<one-to-many class="Child" />
</list>
</class>
</hibernate-mapping>
<hibernate-mapping package="com.example.domain">
<class name="com.example.domain.Child" table="CHILD">
<id name="id" column="child_id" access="field">
<generator class="increment" />
</id>
<property name="name" column="child_name" access="field" />
</class>
</hibernate-mapping>
ho aggiunto not-null="true"
alla mappatura genitore.
Hai provato a show_sql
insieme nella configurazione Hibernate per vedere SQL generato?