1

コレクションをクリアして同時に更新しようとしています。子があり、コレクション内の現在のアイテムを見つけて非同期に削除すると、多くの時間を節約できます。

ステップ 1. コレクション内のすべてのアイテムを検索します。ステップ 2. アイテムが何であるかがわかったら、それらを削除するプロセスを fork します。

def memberRedbackCriteria = MemberRedback.createCriteria()
    // #1 Find all the items in the collection.
    def oldList = memberRedbackCriteria.list { fetchMode("memberCategories", FetchMode.EAGER) }
    // #2 Delete them.
    Promise deleteOld = task {
        oldList.each { MemberRedback rbMember ->
              rbMember.memberCategories.clear()
              rbMember.delete()
         }
 }

エラー メッセージは次のとおりです。コレクションを 2 つの開いているセッションに関連付けようとする不正な試みです。

アイテムを見つけてからフォークすると、新しいセッションが作成され、フォークする前にコレクションが構築され、新しいセッションを使用してアイテムが削除されると推測しています。

現在のスレッドでアイテムを収集する必要があります。そうしないと、状態がどうなるかわかりません。

4

2 に答える 2