我正在使用bean对象从数据库中检索数据,名为AudienceInfo。 AudienceInfo有两个属性:
public String messageBody;
public BigDecimal audienceNo;
数据库中的messageBody是varchar2,audienceNo是数字。 为了在DAO类中获取数据,一切正常并且已经选择了数据。 但是当我将Dao类的对象(客户)传递给我的主类时,会发生错误。这是我在主类中的代码:
Iterator<AudienceInfo> iterator = customer.iterator();
int i = 0;
while (iterator.hasNext()) {
BigDecimal com = (customer.get(i).getAudienceno());
String msgBody = customer.get(i).getMessageBody();
iterator.next();
++i;
}
错误是:
Exception in thread "main" java.lang.ClassCastException: java.math.BigDecimal cannot be cast to com.htsc.sms.model.bo.AudienceInfo
当我在jdbc中使用此代码时,一切正常,我可以看到结果集但是在休眠中我有这个问题。
答案 0 :(得分:0)
我自己找到了答案: 在查询中使用addScalar解决了问题
Query query = session.createSQLQuery("select AUDIANCE_NO as audianceno , MSG_BODY as messageBody from SMS_MSG_QUEUE").addScalar("audianceno" , new BigDecimalType()).addScalar("messageBody" , new StringType()).setResultTransformer(Transformers.aliasToBean(AudinceInfo.class));