Ich habe zwei Hibernate-Klassen in Play/Scala, Group
und Item
, wo eine Gruppe viele Elemente haben kann. Was ich brauche, ist, alle Gegenstände aus einer Gruppe zu entfernen. Ich versuche, so zu entfernen:ConcurrentModificationException in Play für Scala + Hibernate
val group = session.get(classOf[Group],groupCode)
val it = group.items.iterator
while(it.hasNext) {
val i = it.next
group.items.remove(i)
}
Die erste Iteration funktioniert gut, aber auf der zweiten Iteration ich ConcurrentModificationException
bekommen.
Was ist diese Ausnahme und wie Sie dieses Problem beheben können?
'it.remove' funktioniert, aber wenn ich das übergeordnete Objekt speichere, bekomme ich eine SQL-Ausnahme von Hibernate. Im SQL-Log sehe ich, dass es versucht, die Items-Tabelle zu aktualisieren, anstatt die Zeilen zu löschen. Da JDBC versucht, eine Spalte mit null festzulegen, gibt JDBC den Fehler aus. Dies ist der Protokolleintrag: 'update items set group_sk = null wobei group_sk =?'. Warum versucht es zu aktualisieren anstatt zu löschen? – ps0604
Das Entfernen von Elementen aus der group.items-Liste entfernt nur die Verbindung zwischen Element und Gruppe - Item-Objekt selbst wird nicht gelöscht. Wenn Sie Item Objekt löschen möchten, müssen Sie session.delete (i) – mateuszlo