在单个NHibernate HQL语句中执行多个更新

时间:2010-02-08 10:01:03

标签: nhibernate hql

我想在HQL中编写以下SQL,因此它作为单个语句执行:

update child_thingy c
set c.parent_thingy_id = null
where c.common_thingy_id = @common_thingy_id

delete
from parent_thingy p
where p.common_thingy_id = @common_thingy_id

我已将SQL翻译成HQL,如下所示:

update ChildThingy c
set c.ParentThingy = null
where c.CommonThingy = :commonThingy

delete
from ParentThingy p
where c.ParentThingy = :commonThingy

我想将它作为单个语句运行,但我不能在使用CreateQuery&的单个HQL块中运行。 executeUpdate的。我无法在MultiQuery块和List中运行它,因为我得到以下异常:

System.NullReferenceException: Object reference not set to an instance of an object.
at NHibernate.Impl.MultiQueryImpl.AggregateQueriesInformation()
at NHibernate.Impl.MultiQueryImpl.get_Parameters()
at NHibernate.Impl.MultiQueryImpl.CreateCombinedQueryParameters()
at NHibernate.Impl.MultiQueryImpl.List()

我似乎无法找到与ExecuteUpdate等效的MultiQuery。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

似乎不可能(在NH 2.1.2中),因此不得不求助于使用CreateSQLQuery和ExecuteUpdate :(