Удалить несколько записей по списку идентификаторов с помощью оператора HQL

Я хочу удалить несколько записей определенной сущности, идентификатор которой есть в списке имеющихся у меня идентификаторов. Я пытаюсь выполнить это действие на 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]

query - это оператор 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 неоднозначен.

Как я могу решить эту проблему?

7
задан Brian Tompsett - 汤莱恩 16 July 2015 в 10:00
поделиться