Zdravim,
select p from Concept c left join c.parents p where c = :id
Petr Kolesa napsal(a):
> Lukas Barton napsal(a):
>> Ahoj,
>>
>> toto udelat nejde, viz manual Hibernatu kapitola 6.3.2.
>> (http://www.hibernate.org/hib_docs/reference/en/html/collections.html)
>>
>> You may specify a bidirectional many-to-many association simply by
>> mapping two many-to-many associations to the same database table and
>> declaring one end as /inverse/ (which one is your choice, but it can
>> not be an indexed collection).
>>
>> Neni proste jak ulozit a manageovat oba dva indexy.
>>
>> Lukas
>>
> Nakonec jsem v tom zbytecne hledal slozitosti:
>
> @Entity
> class Concept {
> @ManyToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE},
> mappedBy="children")
> private List<Concept> parents;
> @ManyToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE})
> private List<Concept> children;
> }
>
> Dela presne to, co jsem potreboval.
>
> Problem je v tom, ze mi porad nejak nejde zkrotit Hibernate, i presto ze
> mi nedela problemy uvazovat v jazyce objektu ani v jazyce relacni databaze.
>
> Napr: Jak by mel vypadat HQL dotaz, ktery by mi vratil rodice uzlu, kdyz
> mych mel takovyhle mapovani:
>
> @Entity
> class Concept {
> @Transient
> private List<Concept> parents; @ManyToMany(cascade={...})
> private List<Concept> children;
> }
>
> Tj. neukladaj se mi rodice.
>
> Tabulky vypadaji
>
> table CONCEPT
> ID : integer
> ...
>
> table CONCEPT_CONCEPT
> PARENT_ID : integer
> CHILD_ID : integer
>
> V SQL by dotaz vypadal
>
> select * from
> Concept c left join concept_concept cc
> on cc.parent_id = c.id
> where
> cc.child_id = :hledaneID;
>
> Jak totez zformulovat v HQL?
>
> diky
>
> kolisko