2012-05-12 10 views
13

Pracuję na hibernacji w Zaćmienie. Wykonuję proste zapytanie "Od". Oto kod:Kwerenda hibernacji daje ten sam rekord wiele razy

Problem polega na tym, że list.size() zwraca 11, co jest zgodne z 11 rekordami w mojej tabeli. Ale kiedy jestem w pętli while, te same rekordy wyświetlane wielokrotnie i pętla termintes po 11 iteracji. tutaj jest moje wyjście

enter image description here

tutaj jest to, co chcę

enter image description here

Teraz widać, że w mojej mocy, rekord zostanie wyświetlony 11 razy, ale ten sam zapis jest wielokrotnie powtarzany . I potrzebuję danych wyjściowych wyświetlanych na późniejszym obrazie.

uprzejmie mi pomóc w tym zakresie, ponieważ jestem nowy w hibernacji

Odpowiedz

18

Dzieje się tak, gdy element id w pliku hbm nie jest PK w tabeli DB. Hibernate traktuje wszystkie wiersze o tym samym identyfikatorze co ten sam obiekt.

Zmień element id tak, aby wskazywał na kolumnę PK lub użyj elementu composite-id, jeśli twoja tabela ma tylko złożony klucz podstawowy.

0

Czy jesteś pewien, że tabela jest prawidłowo wypełniona? try:

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

futhermore, dostajesz tę listę z myślą? jesteś pewien, że zrobiłeś ten widok poprawnie?

+3

To jest SQL, a nie HQL. –

0

Należy użyć odrębnego słowa kluczowego, aby filtrować ten sam wynik.

1

swojej jednostki Myview musiały wdrożyć java.io.Serializable sprzęgowi

0

Jeśli masz skojarzenia w mapowaniu następnie sprawdzić, czy fetch=FetchType.EAGER. Jeśli tak, użyj innego typu pobierania lub trybu pobierania.

0

Umieść obiekty zwrócone przez Hibernate na LinkedHashSet i zwróć LinkedHashSet.

Powiązane problemy