-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: Objekt lässt sich nicht aus einem Set entfernen
PostPosted: Mon Oct 17, 2005 9:12 am 
Newbie

Joined: Mon Oct 17, 2005 7:58 am
Posts: 1
Hi

Mein Problem ist, mein Benutzer hat ein Set<FahrzeugBean> und wenn ich ein neues Fahrzeug hinzufüge -> den Benutzer speichere und dann doch gleich das Fahrzeug wieder löschen möchte funktioniert die
benutzer.getFahrzeuge().remove(neuesFZ);
Methode des java.util.Set nicht! Ich muss erst den Benutzer neu laden
benutzerDatenBean.get(id); und kann dann erst benutzer.getFahrzeuge().remove(neuesFZ);
ausführen.

Ich benutze:

Tomcat 5.5.9
Java Server Faces 1.1 / MyFaces 0.9
JDK 1.5.0_05
Hibernate 3.0.6
HibernateSyncronizer3.1.1
Eclipse 3.1
MySQL 4.1.0

Meine ManagedBean ist prinzipiell so auf gebaut.

class AVManagerBean ( JSF scope session )

enthält:
private BenutzerDatenBean benutzer;

der Benutzer enthält:

private Set<FahrzeugBean> fahrzeuge = new HashSet();



Ausführung gekürzt:

Code:
benutzerDatenBean.getFahrzeuge().add(neuesFZ);

BenutzerDatenBeanDAO dao = new BenutzerDatenBeanDAO();


// HibernateSyncronizer DAO
Code:
dao.saveOrUpdate(benutzerDatenBean);


// Hibernate erledigt alles inkl. Der Vergabe der ID

und dann falls der User es sich anders überlegt gleich wieder

Code:
fz = getFahrzeugFromBenutzerSet(neuesFZ.getId());


Code:
public FahrzeugBean getFahrzeugFromBenutzerSet(long id) {
        FahrzeugBean tempFZ = null;
        // Holt das FZ aus den Set des Benutzers leider liniare suche
        Iterator<FahrzeugBean> iter = benutzerDatenBean.getFahrzeuge().iterator();
        while(iter.hasNext()) {
            tempFZ = iter.next();
            if (tempFZ.getId() == id) {
                break;
            }
        }
        return tempFZ;
    }// public FahrzeugBean getFahrzeugFromBenutzerSet(long id)



Code:
benutzerDatenBean.getFahrzeuge().remove(fz);



Warum funktioniert die remove() nicht?


Hibernate hat doch die Id vergeben und es müsste doch das gleiche Objekt sein!
Wie können sie sich noch unterscheiden? Es muss doch einen unterschied geben sonst würde die remove() doch funktionieren oder?

Hier noch ein teil des bhm.xml

<!-- Beziehungen -->
<set name="fahrzeuge" inverse="true" lazy="false" cascade="all-delete-orphan" >
<meta attribute="field-description">
@hibernate.set
inverse="true"
lasy="false"
cascade="all"

@hibernate.collection-key
column="kundennr"

@hibernate.collection-one-to-many
class="de.optimum24.av.app.FahrzeugBean"
</meta>
<key column="kundennr" on-delete="cascade"/>
<one-to-many class="de.optimum24.av.app.FahrzeugBean"/>
</set>
[/code]


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.