hibernate中的BigDecimal Cast Exception

时间:2014-05-06 09:20:35

标签: java hibernate java-ee hibernate-mapping

我正在使用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中使用此代码时,一切正常,我可以看到结果集但是在休眠中我有这个问题。

1 个答案:

答案 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));