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)