加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用HQL语句按id列表删除多个记录

发布时间:2020-12-15 07:55:18 所属栏目:百科 来源:网络整理
导读:我想删除某个实体的多个记录,其中实体的id在我所拥有的ID列表中.我正在尝试使用NHibernate在C#中执行此操作. 我所拥有的是一个ID列表. 我想做类似的事情: var idList = new ListGuid() { Guid.NewGuid(),Guid.NewGuid()};_session.CreateQuery("DELETE FROM
我想删除某个实体的多个记录,其中实体的id在我所拥有的ID列表中.我正在尝试使用NHibernate在C#中执行此操作.

我所拥有的是一个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是不明确的.

我怎么解决这个问题 ?

解决方法

删除等号:
DELETE FROM myObject o WHERE o.Id IN :idList

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读