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 : 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>
È stato utile?

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?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top