Problem mit Hibernate und JSF: Attribute verschwinden!?


Der Held

Erfahrenes Mitglied
Hi Leute,
folgendes Mapping:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="myPackage" auto-import="true">
   <class name="Standort" table="STANDORT" >
      <id name="id" type="long" column="`ID`">
         <generator class="native" />
      </id>

      <!-- other props omitted -->

      <list name="technischeEinheiten" cascade="save-update" lazy="false">
         <key column="STANDORT_ID" not-null="true"/>
         <list-index column="TE_INDEX" />
         <one-to-many class="TechnischeEinheit"  />
      </list>

         
   </class>
</hibernate-mapping>

Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="myPackage" auto-import="true">
   <class name="TechnischeEinheit" table="TECHNISCHE_EINHEIT">
        <id name="id" type="long" column="ID">
         <generator class="native" />
      </id>

      <!-- back ref to parent for navigatability  -->
      <many-to-one name="standort" class="Standort" column="STANDORT_ID" not-null="true" insert="false" update="false" lazy="false" />
      <!-- other properties omitted -->
      
   </class>
</hibernate-mapping>

habe ein Interessantes Problem mit einer JSF App die Spring(2.5) und Hibernate(3.3) einsetzt.
Mittels Hibernate wird ein Objektgraph aufgebaut, dieser ist soweit Konsistent, es können Entities persistiert und wieder geladen werden. Das Problem taucht auf, wenn ich in einer Eltern-Kind Beziehung, bei der die Kindelemente in einer Liste des Elternobjektes liegen, ein neues Kindelement hinzufüge. Das Elternobjekt wird geladen und kann korrekt auf der Oberfläche (JSF 1.2, ICEFaces 1.7.1, SpringOSIV-Filter) ausgegeben werden. In der Action-MEthode sind die Listen jedoch immer leer, d.h. das neue Kindelement ist nach der Action-Methode immer das einzige Objekt in der Liste egal wieviele Kindelemente das Objekt eigentlich hat, im darauffolgenden View wird also auch nur ein Element angezeigt.

Ein neuer Request sorgt dann dafür dass wieder alles stimmt, aber ich mnöchte nach dem Hinzufügen eben immer den richtigen Stand anzeigen können. Lazy-Loading auf false zu setzen bewirkt nichts, ich vermute es handelt sich um ein PRoblem mit Konversationen.

Hat jemand eine Idee?
 

Der Held

Erfahrenes Mitglied
Das Problem scheint mit dem reattachment zur Session zusammen zu hängen.
Ich kriege das Objekt nicht wieder mit der Session verbunden, so dass wieder alle Attribute richtig gesetzt sind.

Sollte nach einem Session.flush() nicht die Transaktion ausgeführt werden? Dann könnte ich die Attribute einfach nachladen, aber scheinbar wird immernoch auf das automatische Commiten der Transaktion gewartet. Ich habe auch den Modus @Transactional(propagation=REQUIRES_NEW) probiert, ohne Erfolg :-(
 

Neue Beiträge

Forum-Statistiken

Themen
272.360
Beiträge
1.558.632
Mitglieder
187.834
Neuestes Mitglied
jordanx0206