我编写了这样的代码,以便使用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());
发生相同的错误。我怎样才能解决这个问题?
最佳答案
您目前仅查询分期付款的两个部分。如果您想获取全部内容,则可能会出现以下情况:
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
关于java - list.get()。method产生强制转换异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10699888/