我想刪除某個實體的ID在ID列表中的實體的多個記錄。我想用NHibernate在C#中執行此操作。使用HQL語句刪除ID列表中的多條記錄
我所擁有的是一個ID列表。
我想要做一些與此類似:
var idList = new List<Guid>() { Guid.NewGuid(),Guid.NewGuid()};
_session.CreateQuery("DELETE FROM MapsItem o WHERE o.Id = IN :idList")
.SetParameterList("idList", idList)
.ExecuteUpdate();
這將導致到以下錯誤:
Exception of type 'Antlr.Runtime.NoViableAltException' was thrown. near line 1, column 33 [DELETE FROM Album o WHERE o.Id = IN :idList]
查詢是HQL語句。
HQL查詢出了什麼問題。
上述問題提供的兩個答案都給出了正確的解決方案。但是,當我執行HQL時,錯誤如下:
could not insert/select ids for bulk delete[SQL: insert into #MapsItem SELECT mapsitem0_.Id as Id FROM MapsItem mapsitem0_ inner join BaseEntity mapsitem0_1_ on mapsitem0_.Id=mapsitem0_1_.Id WHERE Id in (? , ? , ? , ? , ? , ?)]
實體MapsItem派生自實體BaseEntity。數據庫中都有一個屬性Id。 SQL查詢無法執行,因爲WHERE子句中的列ID是模糊的。
我該如何解決這個問題?
同時使用query.ExecuteUpdate – Silviu 2011-07-28 13:50:04
您需要回落到SQL試圖批量更新派生的元素我遇到了同樣的問題(不明確的列名「身份證」)! – Rippo 2012-04-12 15:31:04