我正在尝试清除一个集合并同时更新它。它有孩子,在集合中查找当前项目并异步删除它们将为我节省大量时间。
步骤 1. 找到集合中的所有项目。第 2 步。一旦我知道这些项目是什么,就创建一个流程来删除它们。
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()
}
}
错误消息是:非法尝试将集合与两个打开的会话相关联
我猜是因为我找到了项目,然后分叉,这会创建一个新会话,以便在分叉之前构建集合,并使用新会话来删除项目。
我需要收集当前线程中的项目,否则我不确定状态会是什么。