/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
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

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste