Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    18

    [JPA] campo relationship ritorna null

    Ciao a tutti, ho un problema fastidioso che capita non sempre...
    faccio un piccolo esempio per capire meglio...
    Ho due entity UTENTE e INFO_UTENTE con relazione 1:1(@OneToOne)
    Ho un utente e voglio reperire le informazioni relative a lui presente in INFO_UTENTE posso arrivarci direttamente senza effettuare una query grazie all'annotazione @OneToOne
    codice:
    ...
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "utenti")
        private Info_Utente info;
    ...
    il problema è che a volte ricevo correttamente la tupla ed altre volte null... come se non avesse caricato ancora la tupla corrispondente....
    penso che il motivo la modalità di fetch... come posso risolvere? devo per forza eseguire la query per essere certo di aveere l'informazione corretta?

    è fastidiosissima come cosa... non mi dà nessuna garanzia ..

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    18
    è chiaro ciò che ho scritto prima?

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    18
    up

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Qui ci sono degli esempi completi di programma con relazione OneToOne:
    http://www.java2s.com/Code/Java/JPA/...neMappedBy.htm
    In fondo alla pagina ci sono altre varianti.
    Prova a confrontare con il tuo codice perché replicare il tuo problema magari non è semplicissimo.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    18
    si mi rendo conto che non è per niente semplice riproporre il mio errore, anzi... infatti è una situazione abbastanza particolare....
    comunque ti ringrazio per il link, ci presterò più tempo perchè in un primo momento non sono riuscito a trovare una soluzione ancora...

  6. #6
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    per essere strano e strano. La modalità di fetch non c'entra. Ci sono due modi: eager e lazy. Il primo carica la relazione subito, il secondo la carica solo se necessario. Di default tutte le relazioni uno a uno sono eager, quindi il fatto che non ci sia nulla è possibile che abbia ragione lui e sul db non ci sia davvero nulla associato al tuo oggetto. Controlla

    Suggerisco di utilizzare l'annotazione @NotNull se è importante che ci sia qualcosa, ma non fa parte di jpa, ma di EJB 3.1, nello specifico Bean Validation 1.0

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    18
    è un errore stranissimo e bruttissimooo!
    mi sta facendo dannare!solo dopo vari tentativi diciamo carica il valore...
    se nel frattempo faccio altre operazioni(od anche se riavvio netbeans) il valore poi lo carica.. ma se inserisco una nuova tupla nel db ritorniamo punto e da capo...

    nel database i valori ci sono eccome e glassfish maledetto che non li carica!

    ora provo a mettere @NotNull e vediamo...speriamo............

    ma i campi "relazione" non dovrebbe riempirli lui in automatico??

  8. #8
    Ti sei dimenticato di dire una cosa fondamentale.
    Che implementazione di JPA stai usando (eclipselink,hibernate etc...)?
    Quale versione ?
    A quanto ho capito e un progetto web che versione di Glassfish stai usando ?

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    18
    Finalmente ho risoltooooooooo ALLELUJAA

    il problema è che utilizzavo relazioni bidirezionali ma che erano "attaccate" solo da una parte... ed in più dovevo aggiungere l'optional=true visto che non sempre è popolata info_utente...

    @francesco.muia
    si è un progetto enterprise war+ejb.. e comunque eclipselink jpa2.0


    ciaoooo

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.