这个异常搞的我摸不清头脑了
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去掉看看,映射还有没有问题