Play/Scalaに2つのHibernateクラス、Group
とItem
があります。ここで1つのグループは多くのアイテムを持つことができます。私が必要とするのは、グループからすべてのアイテムを削除することです。Scala + Hibernate用のConcurrentModificationException
val group = session.get(classOf[Group],groupCode)
val it = group.items.iterator
while(it.hasNext) {
val i = it.next
group.items.remove(i)
}
最初の反復が正常に動作しますが、私はConcurrentModificationException
を取得する2回目の繰り返し上:私はこのように削除してみてください。
この例外とは何か、この問題を解決する方法は何ですか?
'it.remove'は機能しますが、親オブジェクトを保存すると、HibernateによってスローされたSQL例外が発生します。 SQLログでは、行を削除するのではなく、アイテムテーブルを更新しようとしています。 nullで列を設定しようとするため、JDBCはエラーをスローします。これはログエントリです。 'update items set group_sk = null where group_sk =?'なぜ、削除の代わりに更新を試みるのですか? – ps0604
group.itemsリストから項目を削除すると、項目とグループ間の接続のみが削除されます.Itemオブジェクト自体は削除されません。 Itemオブジェクトを削除したい場合は、session.delete(i)を実行する必要があります。 – mateuszlo