# [hibernate] different object with the same identifier value



## Guest (11. Apr 2007)

hallo, hab hier ein kleiens hibernate problem:
bekomme eine: "a different object with the same identifier value was already associated with the session" exception:

grundlegend was ich mache:
ich lade kostenstellen daten für immer 12 monate und mehreren stellen
wenn wenniger als 12 monate vorhanden sind, werden sie angelegt
laden funktioniert
erzeugen funktionert
nur wenn er daten einer stelle laden kann und in der nächsten stelle monate anlegen muss, bekomme ich den fehler


```
//lade für jede stelle das ganze jahr und füge es den ergebniss vektor hinzu
    for(int j = 0; j<stellen.size();j++){
	//Planung dieser Kostenstelle
	Vector planungenKtst = new Vector(12);
	Stelle ktst = (Stelle) stellen.get(j);

	//lade die einstellung für dieses jahr der stelle
	List result = session.createQuery("from Einstellplanung e WHERE e.stelle ='"+ktst.getName()+"' AND e.jahr ="+jahr+ " ORDER BY monat").list();

                //wenn weniger als 12 monate vorhanden, bei bedarf anlegen
	if(result.size() < 12){
    	    int resultPos =0;
	    for(int monat =1; monat <= 12; monat++){
		if((resultPos > result.size()-1) ||((Einstellplanung)result.get(resultPos)).getMonat() !=monat){
                                    Einstellplanung p = new Einstellplanung();
		    p.setStelle(ktst.getName());
		    p.setMonat(monat);
		    p.setJahr(2007);

                                    //hier wirft er die exception!!!!
		    session.save(p);
		    planungenKtst.add(p);
		}else{
		    planungenKtst.add(result.get(resultPos));
		    resultPos++;
		}
	    }
                
	}else{
                    planungenKtst.addAll(result);
	}			
}
```

ich bin mir nicht sicher ob ich verstehe warum der fehler auftritt, wenn ich halt ein schon vorhandens objekt speichern möchte oder? aber ich ersetlle es doch frisch "Einstellplanung p = new Einstellplanung()", die Id hab ich wie in der hibernate doku auf Long gesetzt, und ist zum Zeitpunkt des speicherns null.

hat jemand einen tip für mich?


----------



## Guest (11. Apr 2007)

aja, ich muss mit java 1.3 auskommen, nur so nebenbei


----------



## Guest (11. Apr 2007)

Anonymous hat gesagt.:
			
		

> aja, ich muss mit java 1.3 auskommen, nur so nebenbei


 :autsch:  :bae:  :wink: 

Wenn Monate fehlen, fehlen sie am Ende oder auch zwischendurch?


----------



## Guest (11. Apr 2007)

OK, vergiss die Frage. Du behandelst ja bereits den Fall, dass Monate zwischendurch fehlen.
Das einzige, was verdächtig aussieht, ist das setJahr(2007) und wenn es einen Unique-Key
"Kostenstelle-Jahr-Monat" gibt (wäre auch sinnvoll). Bei der Abfrage ist Jahr variabel, in dem 
Code danach nicht mehr.


----------



## Guest (12. Apr 2007)

"Kostenstelle-Jahr-Monat" als schlüssel zu verwenden wollte ich auch schon, nur ich hab noch nicht herausgefunden wie ich mit hinbernate mehrere felder als schlüssel verwende, vielleicht kann mir da auch jemand helfen....

als schlüssel verwende ich einfach einen Long wert, aber ich denk den verwallten hibernate intern oder?
ok, das jahr is noch hard gecoded, das hab ich bereits angepasst, daran liegts nicht...


----------



## Gast (20. Apr 2007)

du hast hascode u. equals von Einstellplanung nicht richtig implementiert
(wenn überhaupt

Gruss


----------

