|
| Hibernate: query med FK = null Fra : Janus |
Dato : 05-02-08 03:16 |
|
Jeg har en tabel der indeholder et mappet objekt Obj. Tabellen
indeholder også en FK sat af en uni-directional one-to-many
association (ParentObj 1 ---> * Obj).
Jeg ønsker at lave en HQL-query der returnerer de objekter, der har FK
= null. Hvordan gør jeg det? Jeg har prøvet med noget lignende "from
Obj obj where obj.fk is null" (sikkert ikke korrekt syntaks), men den
query fejler, da feltet fk ikke tilhører Obj, men objektet ParentObj.
Nogen der kan hjælpe mig? Bliver jeg nødt til at lave associationen bi-
directional?
Pft,
Janus
| |
Frederik Hansen (07-02-2008)
| Kommentar Fra : Frederik Hansen |
Dato : 07-02-08 07:46 |
|
Hej Janus,
Hvis jeg har forstået dig rigtigt, så vil du gerne have ubrugte Obj,
altså hvor der ikke er nogen ParentObj som peger på den?
Nu er jeg så ikke, så stærk i HQL, mere i SQL, men måske kan vi med
fælles hjælp, sovse noget sammen som virker..
"from Obj obj where obj.fk not in (select ParentObj.fk from ParentObj)"
Hjælper det?
Janus wrote:
> Jeg har en tabel der indeholder et mappet objekt Obj. Tabellen
> indeholder også en FK sat af en uni-directional one-to-many
> association (ParentObj 1 ---> * Obj).
>
> Jeg ønsker at lave en HQL-query der returnerer de objekter, der har FK
> = null. Hvordan gør jeg det? Jeg har prøvet med noget lignende "from
> Obj obj where obj.fk is null" (sikkert ikke korrekt syntaks), men den
> query fejler, da feltet fk ikke tilhører Obj, men objektet ParentObj.
>
> Nogen der kan hjælpe mig? Bliver jeg nødt til at lave associationen bi-
> directional?
>
> Pft,
> Janus
| |
Janus (07-02-2008)
| Kommentar Fra : Janus |
Dato : 07-02-08 03:35 |
|
On 7 Feb., 07:46, Frederik Hansen <fhan...@nospam-filter.com> wrote:
> Hej Janus,
>
> Hvis jeg har forstået dig rigtigt, så vil du gerne have ubrugte Obj,
> altså hvor der ikke er nogen ParentObj som peger på den?
>
> Nu er jeg så ikke, så stærk i HQL, mere i SQL, men måske kan vi med
> fælles hjælp, sovse noget sammen som virker..
>
> "from Obj obj where obj.fk not in (select ParentObj.fk from ParentObj)"
>
> Hjælper det?
>
Hej Frederik!
Tak for dit forslag! Det virker sådan set fint nok, jeg har lavet en
løsningsmodel i Native SQL i stil med: select obj.[misc feltnavne]
from Obj as obj where obj.parent is null. Jeg fik så problemer, da jeg
ville presse query'en ned i nogle Objekter af typen Obj med metoden
session.addEntity(Obj.class), men det virkede (selvfølgelig) ikke.
Jeg har derfor ændret på min mapping og lidt i koden til Obj og
Parent, således det nu er en bidirectional association med en
inverse="true" på den ene side, og kalder obj.setParent(this) i
Parents addObj(Obj obj) metode. Herefter kan jeg lave en HQL query i
stil med: from Obj obj where obj.parent is null.
Er der forresten nogen der ved, hvorfor man ikke kan sætte many-to-one
siden af en bidirectional association til inverse="true"?
Mvh Janus
| |
|
|