insert into Item (ost, value, comments, startTime, endTime, proposedBy)
select si.ost, si.value, si.comments, si.endTime, si.endTime, u
from Item si, User u
where si.ost = ? and u.id = ?
var hql = @"INSERT INTO EventFacility (Facility, Event, Owner, Position)
SELECT f, :evt, :own, :position from Facility f where f.Id IN (105, 109, 110)";
var @event = Session.Get<Event>(351931);
var query = Session.CreateQuery(hql)
.SetInt32("position", 0)
.SetEntity("evt", @event)
.SetEntity("own", @event.Owner);
var x = query.ExecuteUpdate();
Assert.AreEqual(3, x);
我们可以通过使用setParameter方法并引用example 6 of HQL and JPQL User Guide来实现。此外,由于Hibernate 5.3之后不再支持传统样式的查询参数(?),因此“?”应替换为Named Parameter。(为了获得更好的可读性和可维护性,即使您使用的是早期版本,也应使用Named Parameter) 以下方法演示了上述变化:
3条答案
按热度按时间fruv7luv1#
不能在HQL中完成;它不允许在select子句中引用参数。
wmtdaxz32#
我不知道最后一个答案。我使用的是NH 3.2,我能够让这个工作
在这个例子中,我需要创建一个新的EventFacility对象,其中包含了你在这里看到的几乎所有字段。Event实体有另一个实体,Owner挂在它上面。
gcxthw6b3#
我们可以通过使用setParameter方法并引用example 6 of HQL and JPQL User Guide来实现。此外,由于Hibernate 5.3之后不再支持传统样式的查询参数(
?
),因此“?”应替换为Named Parameter。(为了获得更好的可读性和可维护性,即使您使用的是早期版本,也应使用Named Parameter)以下方法演示了上述变化: