v HQL sa to robi pomocou klauzule 'WITH': from Cat as cat left join cat.kittens as kitten with kitten.bodyWeight > 10.0
Pozrite sa, ci ma tato klauzula Criteria ekvivalent 2009/5/26 Roman Zakutny <roman.zaku...@gmail.com> > > Zdravim, > > uz dlhsi cas sa mi nedari ani za pomoci Googlu!!!:) prist na sposob, ako > dokazem rozsirit ON podmienku pri joinovani entit pomocou Criterii v > Hibernate. Nepomohol mi ziadny sposob v kombinacii s createAlias(...) a > createCriteria(...). Problem je, ze sa ta podmienka stale objavi az v > klauzule WHERE. Predstavit sa to da na dvoch entitach COMPANY a USER vo > vztahu 1:N. > > @Entity > class Company { > ... > public Set<User> getUsers() { return users }; > ... > } > > V praxi potrebujem dosiahnut obmedzenie tejto mnoziny Userov. Napriklad > chcem, aby mi vratil iba tych, ktorych vek je viac ako 40 rokov. Tym, ze sa > mi tato podmienka stale ocitne vo WHERE, tak to sposobi, ze pokial tam taky > User neexistuje, tak takato Company sa odignoruje a ja ju napriek tomu > potrebujem, avsak s prazdnou mnozinou Userov. Takze chcem omedzenie na jednu > najoinovanu tabulku a nie na cely zaznam... > > Nezafungoval mi ani nasledny dotaz > > getSession().createCriteria(Company.class) > .createCriteria(User.class, "u", Criteria.LEFT_JOIN) > .add(Restrictions.gt("u.age", 40)); > > , ktory mi vratil > SELECT * FROM company c LEFT OUTER JOIN user u ON c.id_company = u.id_company > WHERE u.age > 40 > > , ale ja potrebujem > SELECT * FROM company c LEFT OUTER JOIN user u ON (c.id_company = > u.id_company AND u.age > 40) > > Ma s tym niekto skusenost? Znie to velmi jednoducho, ale... > > Vdaka za kazdy napad:) > > S pozdravom Roman. -- Jozef