这个异常搞的我摸不清头脑了
java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Date
at org.hibernate.type.DateType.toString(DateType.java:101)
at org.hibernate.type.NullableType.nullSafeToString(NullableType.java:117)
at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:158)
at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:136)
at org.hibernate.param.NamedParameterSpecification.bind(NamedParameterSpecification.java:67)
at org.hibernate.loader.hql.QueryLoader.bindParameterValues(QueryLoader.java:514)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1593)
at org.hibernate.loader.Loader.doQuery(Loader.java:696)说是类型转换异常 我数据库里面存的是日期类型的数据timestamp 
  `CREATE_TIME` timestamp NOT NULL DEFAULT '1971-07-01 00:00:00' COMMENT '创建时间',
  `TO_EXAMINE_TIME` timestamp NOT NULL DEFAULT '1971-07-01 00:00:00' COMMENT '审核时间',
  `START_TIME` timestamp NOT NULL DEFAULT '1971-07-01 00:00:00' COMMENT '广告开始播放时间',
  `END_TIME` timestamp NOT NULL DEFAULT '1971-07-01 00:00:00' COMMENT '广告结束播放时间',我实体类里面用java.unitl.date接收怎么就会出问题呢?
public List<T> findEntity(final String hql,
 final Map<String,Object> parmap, final boolean cache)
throws Exception {
return (List<T>) getHibernateTemplate().execute(
new HibernateCallback() { public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
if(parmap!=null){
Iterator iter=parmap.entrySet().iterator();
while(iter.hasNext()){
Map.Entry e=(Map.Entry)iter.next();
query.setParameter(e.getKey().toString(), e.getValue());
}
}
//写入缓存
query.setCacheable(cache);
return query.list();
} });
}

解决方案 »

  1.   

    你是绑定参数时将string传给了date,检查一下你的parmap里的值的类型
      

  2.   

    我传入的参数是没有问题的  是返回值的问题调试的时候是这里抛出错误的    return query.list();
      而且我把ORM映射里面的Date类型改成String类型也就没抛出错误了
      

  3.   

    在hibernate中timestamp和java.util.Date之间映射好像是有点问题
    你把timestamp改为date即不会有问题了
    你也可以试试把timestamp的default去掉看看,映射还有没有问题
      

  4.   

    去掉default 还真没有这个问题了!很纠结啊 但是我又需要个默认值
      

  5.   

    我遇到相同的问题。但是没有default