2017-08-10 174 views
0

我有一個Vendor類對應於我的數據庫中的Vendor表,我想從該表中檢索數據。當我使用這個:在hql中選擇查詢

Query q = s.createQuery("from Vendor "); 
    java.util.Iterator itr = q.iterate(); 
    while (itr.hasNext()) { 
     Vendor v = (Vendor) itr.next(); 
     System.out.println(v.getVendor Id() + " " + v.getVendorName() + " " + v.getVendorRating()); 

它工作正常。但是,當我想用​​一個select查詢做同樣的:

Query q = s.createQuery("select v.vendorId, v.vendorName, v.venderRating from Vendor v"); 
    Iterator itr = q.iterate(); 
    while (itr.hasNext()) { 
     Vendor v = (Vendor) itr.next(); 
     System.out.println(v.getVendorId() + " " + v.getVendorName() + " " + v.getVendorRating()); 
    } 

引發錯誤:

異常在線程 「主要」 java.lang.ClassCastException: [Ljava.lang.Object ;不能投到 com.apple.hibernate.vendor.Vendor

我錯過了什麼?

回答

0
"select v.vendorId, v.vendorName, v.venderRating from Vendor v" 

不會返回你賣方對象,而是一個Object[],從陣列中的每個項是列。

在你的情況下,它應該是這樣的:

Query q = s.createQuery("select v.vendorId, v.vendorName, v.venderRating from Vendor v"); 
    Iterator itr = q.iterate(); 
    while (itr.hasNext()) { 
     Object[] v = (Object[]) itr.next(); 
     System.out.println(v[0] + " " + v[1] + " " + v[2]); 
    } 

的代碼沒有進行測試,因此可能會有些錯誤,但邏輯是存在的。

+0

它的工作,謝謝你:) –

+0

很高興聽到:)你可以接受答案然後;) –