Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    147

    creare una relazione on to one nel database JPA/Oracle

    Ciao,non riesco a creare una relazione One-to-One all'interno del mio database. Allora,ho due entità e le voglio legare,quindi nel mio database oracle,creo le due entità Pippo e Pluto.Ora devo aggiungere le constraint,per legare le due entità e quindi creo due campi che serviranno come foreign key :




    alter table pippo add(pluto Number(10) unique);






    alter table pluto add (pippo Number(10) unique);



    Ora visto che ho due campi rispettivamente in ogni tabella e sono univoci,dovrei creare la constraint e quindi faccio


    alter table pippo ADD CONSTRAINT FK_Pippo_pluto
    FOREIGN KEY (pluto) REFERENCES pluto(id);



    e poi


    alter table pluto ADD CONSTRAINT FK_Pluto_pippo
    FOREIGN KEY (pippo) REFERENCES pippo(id);



    Il problema e che quando vado a creare le classi,il tool hibernate mi restituisce una relazione Many to One. Non capisco il perchè,visto che i campi pluto e pippo sono settati a unique. Come posso creare,la relazione One to One?


  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    147
    Se provo a fare solo

    alter table pippo ADD CONSTRAINT FK_Pippo_pluto

    FOREIGN KEY (pluto) REFERENCES pluto(id);

    Ottengo una relazione one-to-many

  3. #3
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    le relazioni one to one in genere sono rare perché significa che il tuo modello dei dati viola qualche forma normale... sicuro di averlo pensato bene?

    edit:

    comunque sia:
    codice:
     
    // nella classe pluto
    @OneToOne(optional=false)    @JoinColumn(
    name="pippo_id", unique=true, nullable=false, updatable=false)
    public Pippo getPippo() { return pippo }
     
    // nella classe pippo
    @OneToOne(optional=false, mappedBy="pippo") public Pluto getPluto(){return pluto;}
    Ultima modifica di kuarl; 18-01-2014 a 09:32

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    147
    si in teoria ho delle date e ad ogni data eseguo un operazione,quindi è one to one

  5. #5
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    rileggendo il thread, il codice che ho postato fa quello che vuoi ma non nel modo che vuoi te, e cioé con un campo con chiave esterna in ogni tabella. Se vuoi farlo proprio così nella classe pippo invece del codice che ti ho dato mettine uno simile a quello che ti indico nella classe pluto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.