Avatar billede dn666 Nybegynder
26. november 2008 - 13:34 Der er 2 kommentarer

Hibernate OneToMany

Hej.

Har en tabel hvor jeg skal mappe en relation i Hibernate3, det et en OneToMany relation, det virker fint hvis jeg mappe med en enkelt kolonne som fk, problemet er bare at den reelse fk indeholder 2 kolonner, tilføjer jeg 2 @JoinColumn får jeg denne fejl besked:

"XXXX has the wrong number of column. should be 1"

hvis jeg skulle lave en alm sql ville den se således ud:

select *
from tabelA a, tabelB b
where a.id = b.refId
and  a.name = b.name

hvor id + name giver den samlede fk.

hvordan kan jeg mappe dette i hibernate ?
jeg har prøvet lidt af hvert det nærmeste er noget alla:

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumns({@JoinColumn(nullable = false, name = "REFID"),
        @JoinColumn(nullable = false, name = "NAME")})

men da er det den siger at jeg kun må benytte 1 kolonne..

Hvordan kan jeg lave denne relation korrekt ?

/David N.
Avatar billede dn666 Nybegynder
26. november 2008 - 13:47 #1
Fandt den selv, jeg manglede selvfølgelig referencedColumnName


    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumns({@JoinColumn(name = "REFID", referencedColumnName = "ID"), @JoinColumn(name = "NAME", referencedColumnName = "NAME")})
Avatar billede arne_v Ekspert
27. november 2008 - 01:27 #2
Min erfaring er at livet med Hibernate er nemmere hvis man laver sin tabel struktur
hibernatsk med alle PK og FK som single column ren OID.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester