Zkuste nasledujici zapis v HQL:

FROM Station station WHERE EXISTS(FROM BasinSchema basin JOIN Channel channel WHERE basin.id = :id AND (channel .endRiverStation = station OR channel.sourceRiverStation = station))

(pripadne dejte jako parametr rovnou objekt typu BasinSchema).

 Lukas


Ing. Lumír Návrat napsal(a):
Zdravim,

valcim dneska s NHibernatem a mam tento dotaz:

ISQLQuery = sesssion.createSQLQuery("SELECT DISTINCT Station_W.*" +
" FROM BasinSchema_W INNER JOIN" + " Channel_W ON BasinSchema_W.id = Channel_W.basinSchemaId INNER JOIN" + " Station_W ON Channel_W.endRiverStationId = Station_W.id OR Channel_W.sourceRiverStationId = Station_W.id" + " WHERE (BasinSchema_W.id = :id)").AddEntity(typeof (RiverStation));

Problem mam v tom, ze to ma vratit vsechny stanice, ktere jsou jak pocatecni, tak koncove na kanalech daneho schematizace povodi. V HQL se mi to podarilo pres 2 dotazy a ty pak sloucit v HashedSetu, ale radeji bych neco peknejsiho nez tento SQL nebo 2 HQL.
Jde to vubec? V manualu jsem nic podobneho nenasel.

Lumi(r)

P.S. EndRiverStation na associaci mezi channel-riverstation 1-1 a SourceRiverStation 1-0..1 a BasinSchema-channel aggreguje na 1-*
(Notace : kardinality u trid v  UML diagramu)


Odpovedet emailem