2012-05-12 61 views
13

我正在eclipse中處理hibernate。我正在執行簡單的'From'查詢。這裏是代碼Hibernate查詢多次提供相同的記錄

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()); 
    } 

問題是list.size()返回11,這是正確的,因爲我有我的表11記錄。 但是,當我在while循環中,多次顯示相同的記錄,循環在第11次迭代後終止。這裏是我的輸出

enter image description here

這裏是我想

enter image description here

現在你可以看到,在我的輸出,記錄顯示11次,但相同的記錄被一再重複。我需要的是輸出顯示在後面的圖像。

請幫我在這方面,因爲我是新來冬眠

回答

18

當您的HBM文件中的ID元素不是數據庫表中的PK時,會發生這種情況。 Hibernate將具有相同ID的所有行視爲同一個對象。

要麼將​​您的ID元素更改爲指向PK列,要麼在您的表只有複合主鍵的情況下使用composite-id元素。

0

你確定表中填寫正確? 嘗試:

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

futhermore,你是從一個視圖得到這個名單?你確定你是正確的嗎?

+3

這是SQL,而不是HQL。 –

0

您應該使用distinct關鍵字來篩選相同的結果。

1

你的實體MyView的必須實現java.io.Serializable接口

0

如果你有關聯的映射,然後如果fetch=FetchType.EAGER檢查。如果是,則使用其他獲取類型或fetchMode。

0

將Hibernate返回的對象放到LinkedHashSet並返回LinkedHashSet。

相關問題