hibernate返回值的时候抛出的异常java.lang.String cannot be cast to java.util.Date

chaohua20 2012-04-08 01:45:10
这个异常搞的我摸不清头脑了
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();
}

});
}
...全文
2503 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
一把米 2013-01-29
  • 打赏
  • 举报
回复
引用 4 楼 chaohua20 的回复:
引用 3 楼 的回复:在hibernate中timestamp和java.util.Date之间映射好像是有点问题 你把timestamp改为date即不会有问题了 你也可以试试把timestamp的default去掉看看,映射还有没有问题 去掉default 还真没有这个问题了!很纠结啊 但是我又需要个默认值
我遇到相同的问题。但是没有default。。。
chaohua20 2012-05-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

在hibernate中timestamp和java.util.Date之间映射好像是有点问题
你把timestamp改为date即不会有问题了
你也可以试试把timestamp的default去掉看看,映射还有没有问题
[/Quote]
去掉default 还真没有这个问题了!很纠结啊 但是我又需要个默认值
VanBaston 2012-04-10
  • 打赏
  • 举报
回复
在hibernate中timestamp和java.util.Date之间映射好像是有点问题
你把timestamp改为date即不会有问题了
你也可以试试把timestamp的default去掉看看,映射还有没有问题
chaohua20 2012-04-08
  • 打赏
  • 举报
回复
我传入的参数是没有问题的 是返回值的问题调试的时候是这里抛出错误的 return query.list();
而且我把ORM映射里面的Date类型改成String类型也就没抛出错误了
cseu 2012-04-08
  • 打赏
  • 举报
回复
你是绑定参数时将string传给了date,检查一下你的parmap里的值的类型

67,511

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧