list.get()。方法生成强制转换异常

时间:2012-05-22 10:06:41

标签: java

我编写了这样的代码,用HQL从数据库中获取数据:

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

发生同样的错误。我该如何解决这个问题?

1 个答案:

答案 0 :(得分: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