HQL: объединить «вставить в ... выбрать» с фиксированными значениями параметров - PullRequest
6 голосов
/ 29 сентября 2010

У меня есть оператор HQL:

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 = ?

Как это можно изменить, чтобы использовать значения параметров для столбцов ost и startTime, а другие столбцы брать из select?

Ответы [ 2 ]

0 голосов
/ 19 марта 2012

Я не знаю об этом последнем ответе. Я использую NH 3.2, и мне удалось заставить это работать

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);

В этом примере мне нужно было создать новый объект EventFacility. Почти со всеми полями, которые вы видите здесь. У сущности Event есть другая сущность, с которой зависает Владелец.

0 голосов
/ 14 декабря 2011

Нельзя сделать на HQL; он не разрешает ссылки на параметры в предложении select.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...