2010-09-29 25 views
6

Tôi có HQL tuyên bố:HQL: kết hợp "chèn vào ... chọn" với các thông số cố định giá trị

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

Làm thế nào nó có thể được sửa đổi để sử dụng các giá trị thông số cho oststartTime cột trong khi chụp cột khác từ select?

Trả lời

0

Không thể thực hiện được trong HQL; nó không cho phép tham chiếu tham số trong mệnh đề chọn.

+2

Bạn có tham chiếu về điều đó không? –

0

Tôi không biết câu trả lời cuối cùng. Tôi đang sử dụng NH 3.2 và tôi có thể thực hiện điều này để làm việc

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

Trong ví dụ này, tôi cần tạo đối tượng EventFacility mới. Với khá nhiều tất cả các lĩnh vực bạn nhìn thấy ở đây. Thực thể Sự kiện có một thực thể khác, Chủ sở hữu đã treo nó.

Các vấn đề liên quan