Petr Kolesa napsal(a):
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; }
Mapped by je to same co inverse="false" (mozna true, vzdy se divam do manualu).
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.
Na to pomuze praxe a taky cteni zdrojaku Hibernatu...

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; }


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?
Uplne stejne (left join IMHO neni nutny):

concept from Concept concept join concept.children as children where children=:hledaneChildren

Co se prelozi do SQL jako: select ... from Concept concept left join concept_concept cc on cc.parent_id = concept .id left join Concept children on children .id=cc_child_id where children.id=?


Odpovedet emailem