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.

Odpovedet emailem