Quote:
frage:
wie kann ich einem set ein weiteres objekt mit gleichem identifier hinzufügen?
Das geht schon mal gar nicht, da dies auch der definierten Funktionsweise eines Sets widersprechen würde. Bei einem Set handelt es sich um eine Menge (wie im mathematischen Sinne). Diese dürfen ja keine doppelten Werte enthalten.
Da ich vor einem ähnlichen Problem stand, habe ich in meinen ersten Versuchen den neuen Objekten eine temporäre ID mitgeben. Diese ID ist ein eigenständiges Attribut, welches nichts mit der Datenbank zu tun hat und somit auch nicht im Mapping zu finden ist. Die equals()-Methode wurde soweit umgebogen, dass sie zum Vergleich dieses Attribut verwendet, sollte die eigentliche ID nicht gesetzt ist.
Ein anderer Weg ist zu überlegen welche Kobination der restlichen Attribute Deines Objektes auch eindeutig wären und damit entsprechend die equals()-Methode erweitern falls die ID nicht gesetzt ist. Hier kannst Du Dir aber mit der Eindeutigkeit nie so sicher sein wie bei der DB-ID!!
Die Liste ist ein Weg den ich auch ein paarmal verfolgt habe. Hier musst Du aber darauf achten (wenn die Liste nicht gemappt ist sondern nur zu Bearbeitungszwecken dient), dass Du Dein gemapptes Set und die Liste manuell synchron halten musst! Am Ende bleibt dir aber hier dann auch nichts anderes übrig bleibt als die Liste zu iterieren (ich denke aber auch, dass es sich je nach Datenmodell manchmal nicht vermeiden lässt).