當試圖刪除一批記錄時,只有單行行被刪除!爲什麼這個ScalaQuery語句只能刪除奇數行?
val byUser = Orders.createFinderBy(_.userID)
byUser(id).mutate(_.delete)
如果我反而打印記錄,我得到正確的行數。
byUser(id).mutate{x => x.echo}
我工作圍繞這樣的問題,產生所需的SQL。
(for{o <- Orders if o.userID is id.bind } yield o).delete
但是,mutate版本爲什麼或者如何影響奇數行?
雖然我不知道在這種情況下發生了什麼,這是一個鏈接列表很常見的問題:當您嘗試刪除在迭代時,您刪除一個,然後迭代一個,然後刪除一個,等剩下一半的列表。取決於它的創建方式,任何可變集合上的迭代器都會遇到這個問題。我不知道在這裏可以使用哪些替代策略 - 通過鏈接列表,您只需刪除並讓刪除本身遍歷整個列表即可解決問題。 –
@RexKerr必須與您所描述的內容類似。另一種方法是創建一個查詢,該查詢不調用MutatingUnitInvoker(由createFinderBy等準備語句表達式生成的查詢類型,以及通過參數[T]綁定的表達式) – virtualeyes
@RexKerr看起來您已經得到了唯一的答案,I會張貼它,並得到一些贊成票:) –