2012-05-12 16 views
13

Sto lavorando su ibernazione in eclissi. Sto eseguendo la semplice query "Da". Ecco il codiceLa query di ibernazione dà lo stesso record più volte

List list = sess1.createQuery("From Myview").list(); 
    System.out.println("Records Found :"+list.size()); 

    Iterator<Myview> i = list.iterator(); 

    while(i.hasNext()) 
    { 
     Myview nS = i.next(); 
     System.out.println(nS.getFirstName()+" -- "+nS.getLastName()+" -- "+nS.getAddressLine1()); 
    } 

Il problema è la list.size() restituisce 11, che si trova proprio come ho 11 record nel mio tavolo. Ma quando sono nel ciclo while, gli stessi record vengono mostrati più volte e il termine ciclo termina dopo l'11 ° iterazione. ecco la mia uscita

enter image description here

qui è quello che voglio

enter image description here

ora si può vedere che nella mia uscita, record viene visualizzato 11 volte, ma lo stesso record si ripete ancora e ancora . E quello di cui ho bisogno è l'output mostrato nell'immagine successiva.

Gentilmente mi aiuta in questo senso, come io sono nuovo per il letargo

risposta

18

Ciò accade quando l'elemento id nel file hbm non è un PK nella tabella DB. Hibernate tratta tutte le righe con lo stesso ID dello stesso oggetto.

O modificare l'elemento id per puntare a una colonna PK o utilizzare l'elemento id composito nel caso in cui la tabella abbia solo una chiave primaria composta.

0

Sei sicuro che la tabella sia correttamente riempito? prova:

List list = sess1.createQuery("SELECT * FROM Myview").list(); 

futhermore, hai trovato questo elenco da un punto di vista? sei sicuro di aver realizzato questa visualizzazione correttamente?

+3

Questo è SQL, non HQL. –

0

È necessario utilizzare la parola chiave distinct per filtrare lo stesso risultato.

1

tuo entità Myview devono implementare l'interfaccia java.io.Serializable

0

Se si dispone di associazione nella mappatura quindi controllare se fetch=FetchType.EAGER. Se sì, usa un altro tipo di recupero o fetchMode.

0

Mettere gli oggetti restituiti da Hibernate a un LinkedHashSet e restituire LinkedHashSet.

Problemi correlati