2012-05-22 35 views
0

我已經寫了這樣的代碼使用HQL來從數據庫中的數據:list.get()方法生成轉換異常

Query qr=sess.createQuery("select i.contract_Vcode,i.installment_date from Installment i where i.vcode=:instalVcode").setParameter("instalVcode", installVcode); 
     qr.getNamedParameters(); 
List<Installment> li=null; 
     li=qr.list(); 
int coVcode=li.get(0).getContract_Vcode(); 

我所知contract_Vcode是整數。但是,當我要運行它,在隨後發生錯誤:

Error invoking Action using Hibernate Core Session/Transaction injection 
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to information.Installment 

更多的時候我想看到這樣的確切元素上,

System.out.println("contract installDate is: "+li.get(0).getContract_Vcode()); 

發生同樣的錯誤。我怎樣才能解決這個問題?

回答

2

您目前只查詢分期付款的兩部分。如果你想獲取整個事情,我希望是這樣的:

Query qr = sess.createQuery(
        "select from Installment as i where i.vcode=:instalVcode") 
       .setParameter("instalVcode", installVcode); 

如果您獲取多個屬性(而不是整個實體),你剛剛回來的Object[]在結果的每一行。

所以,你可以用你的原始查詢,但:

List<Object[]> li = qr.list(); 
int coVcode = (Integer) li.get(0)[0]; // 1st column of 1st row 
+0

謝謝lot.VIVA計算器;) – AFF