Weiß' jemand Rat?
Unten aufgeführtes Mapping zeigt ein Mutterobjekt, das über einen composite-element eine Menge von Kindern zugeordnet bekommt. Die Kinder sind ebenfalls über Hibernate gemappt.
Aktion ist: Erzeugen eines neuen Mutterelementes und Zuordnung bereits persistenter Kinder - dann abspeichern mit "HibernateTemplate".save().
Dabei werden für alle Kindelemente jeweils ein INSERT ausgeführt. Danach eine Reihe von SELECTs und danach wird versucht nochmals INSERT Statements auszuführen, was (zu Recht) zu einer unique index violation in ORACLe führt. Entferne ich das UNIQUE Attribute auf dem Index, ist die Aktion erfolgreich, es werden jedoch Einträge doppelt getätigt.
Warum werden doppelte INSERTs ausgeführt? Wie läßt sich das vermeiden?
Für jeden Tip dankbar
So long
G.
Hibernate version: 2.?
Mapping documents:
Code:
<class name="Produktgruppe" table="MBW_PRODUKT_GRUPPEN">
<id column="PROD_ID" name="id" type="java.lang.Long" >
<generator class="sequence">
<param name="sequence">MBW_SEQ_PRODUKT_GRUPPEN</param>
</generator>
</id>
<property name="bezeichnung" column="BEZEICHNUNG" type="java.lang.String" not-null="true"/>
<set name="absenderAddressen" table="MBW_SVPS" lazy="false" inverse="false" cascade="save-update">
<key>
<column name="PROD_ID" />
</key>
<composite-element class="model.ProduktgruppenAbsenderAdresse" >
<many-to-one column="VART_ID" name="versandart" class="model.Versandart" />
<many-to-one column="ADDR_ID" name="adresse" class="model.AbsenderAdresse" />
<many-to-one column="SEGM_ID" name="segment" class="model.Kundensegment" />
</composite-element>
</set>
</class>