2010-09-29 21 views
6

Ho HQL dichiarazione:HQL: combinare "insert into ... select" con parametri fissi valori

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

Come potrebbe essere modificato per utilizzare i valori dei parametri per ost e startTime colonne durante l'assunzione di altre colonne da select?

risposta

0

Non può essere eseguito in HQL; non consente i riferimenti ai parametri nella clausola select.

+2

Avete un riferimento per questo? –

0

Non so quale ultima risposta. Sto usando NH 3.2 e sono stato in grado di ottenere questo al lavoro

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

In questo esempio avevo bisogno di creare un nuovo oggetto EventFacility. Con praticamente tutti i campi che vedi qui. L'entità dell'evento ha un'altra entità, il proprietario se ne sta appiccando.