我在使用Hibernate时,使用了HibernateDaoSupport类,
其中 NoticeName的值为 :2010-01-13 16:16:28.0
        hql="from News news where news.newstime=?";

//执行查询业务

Noticelist=this.getHibernateTemplate().find(hql,NoticeName);

}执行到查询业务时,出现错误如下:严重: Servlet.service() for servlet action threw exception
java.lang.ClassCastException: java.lang.String
at org.hibernate.type.TimestampType.toString(TimestampType.java:55)
at org.hibernate.type.NullableType.toLoggableString(NullableType.java:168)
at org.hibernate.pretty.Printer.toString(Printer.java:65)
at org.hibernate.engine.QueryParameters.traceParameters(QueryParameters.java:271)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:151)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at org.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(HibernateTemplate.java:839)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:362)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:830)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:826)
at jiandong.huaruan.dao.NoticeManagerDao.noticeInitializeSelect(NoticeManagerDao.java:58)
at jiandong.huaruan.service.NoticeManagerService.noticeInitializeSelect(NoticeManagerService.java:36)
at jiandong.huaruan.service.NoticeManagerService$$FastClassByCGLIB$$8a660601.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:714)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:162)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:652)
at jiandong.huaruan.service.NoticeManagerService$$EnhancerByCGLIB$$2d95858c.noticeInitializeSelect(<generated>)
at jiandong.huaruan.action.NoticeManagerAction.noticeInitializeSelect(NoticeManagerAction.java:66)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)是怎么回事?请高手指点一下!

解决方案 »

  1.   

    还有其中 NoticeName的值为 :2010-01-13 16:16:28.0  这个值是从MySql中直接取出来的,怎么会多了一个".0" 呢?
    对 NoticeName 转换数据类型,hql="from News news where news.newstime=?";
    SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.0");
    Date nowDate=null;

    try {

    nowDate = (Date) dateFormat.parse(NoticeName);

    } catch (ParseException e) {
    System.out.println("转换失败!");
    }
    //数据处理
    Noticelist=this.getHibernateTemplate().find(hql,NoticeName);就会报出错误:
    javax.servlet.ServletException: java.lang.ClassCastException: java.util.Date
    这有事怎么个情况呢? 怎样修改啊!
      

  2.   

    你数据库使用的是Date类型, 而你的实体使用的是String类型, 看看是不是。
      

  3.   

    不是,起初我也是这样认为,就使用了数据转换,但是错误依然存在,
    private Date newstime;
      

  4.   

    最近刚接触hibernate,等待高手解决,学习一下。
      

  5.   

    现在数据转换成功,是因为我导的包错了,一个是Util的,一个是Sql包下的,所以才会转换失败,
    但是其中 NoticeName的值为 :2010-01-13 16:16:28.0  
    这个值是从MySql中直接取出来的,
    怎么会多了一个".0" ???????
    还是不明白,并且在使用
      Noticelist=this.getHibernateTemplate().find(hql,NoticeName);
    时,仍然报出:
    Servlet.service() for servlet action threw exception
    java.lang.ClassCastException: java.lang.String
    at org.hibernate.type.TimestampType.toString(TimestampType.java:55)
    at org.hibernate.type.NullableType.toLoggableString(NullableType.java:168)
    at org.hibernate.pretty.Printer.toString(Printer.java:65)
    at org.hibernate.engine.QueryParameters.traceParameters(QueryParameters.java:271)
    at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:151)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
    at org.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(HibernateTemplate.java:839)
    at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:362)
    at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:830)
    at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:826)
    at jiandong.huaruan.dao.NoticeManagerDao.noticeInitializeSelect(NoticeManagerDao.java:58)
    at jiandong.huaruan.service.NoticeManagerService.noticeInitializeSelect(NoticeManagerService.java:36)
    at jiandong.huaruan.service.NoticeManagerService$$FastClassByCGLIB$$8a660601.invoke(<generated>)
    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
    at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:714)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:162)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
    at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:652)
      

  6.   

    .0正常,oracle后面还带3个呢,DB2的还带6个呢。
    对了直接匹配数据库的Date或time,要用new java.sql.*包里面的。
      

  7.   

    import java.sql.Date;type="java.sql.Date"
    bean和配置文件都改下
      

  8.   

    问:为什么findAll方法报异常?我的其他这个地方也是用这个的,怎么没事啊?急
    主键是专业编号,自己添加。
    @SuppressWarnings("unchecked")
    public List<Zhuanye> findAll() {
    log.debug("finding all Zhuanye instances");
    List<Zhuanye> list2 =null;
    try {
    String queryString = "from Zhuanye";
    Query queryObject = HibernateSessionFactory.getSession().createQuery(queryString);
     list2= queryObject.list();

    return list2;
    } catch (RuntimeException re) {
    log.error("find all failed", re);
    throw re;
    }
    }
      

  9.   

     SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    http://www.blogjava.net/zygcs/archive/2006/12/21/89280.html你数据库中存的是什么类型。如果是字符串的话。就不用多说了。
    如果是日期的话。用java.sql.Date.valueOf 转一转试试。
      

  10.   

    String stime = "2010-01-14 09:01:01"  //这是你传的时间
    hql="from News news where news.newstime=to_date('" + stime + "','yyyy-MM-dd HH24:mi:ss')
      

  11.   

    数据库中的字段是timestamp类型的吧