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