Jan Dosoudil napsal(a):
Zdravim,
select p from Concept c left join c.parents p where c = :id
To asi nebude fungovat, protoze Petr pise: "Tj. neukladaj se mi rodice."

 Lukas
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



Odpovedet emailem