Я хочу удалить несколько записей определенного объекта, где идентификатор объекта находится в списке идентификаторов, которые у меня есть.Я пытаюсь выполнить это действие в C # с помощью NHibernate.
У меня есть список идентификаторов.
Я хочу сделать что-то похожее на это:
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.Оба имеют идентификатор свойства в базе данных.Запрос SQL не может быть выполнен, потому что идентификатор столбца в предложении WHERE неоднозначен.
Как я могу решить эту проблему?