2012-05-22 3 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 StackOverflow;) – AFF

Смежные вопросы