hibernate返回值的时候抛出的异常java.lang.String cannot be cast to java.util.Date
这个异常搞的我摸不清头脑了
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接收怎么就会出问题呢?
Java code
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();
}
});
}
------解决方案--------------------你是绑定参数时将string传给了date,检查一下你的parmap里的值的类型
------解决方案--------------------
在hibernate中timestamp和java.util.Date之间映射好像是有点问题
你把timestamp改为date即不会有问题了
你也可以试试把timestamp的default去掉看看,映射还有没有问题