开发者社区> 问答> 正文

Hibernate统一访问接口实现的问题?报错

下面是我从书上看到的代码,结果报错:Cannot cast from Object to long 请问如何解决。

/** 统计指定类的所有持久化对象 */
	public int countAll(String clazz) { final String sql = "select count(*) from " + clazz + "as a";
		Long count = (long)getHibernateTemplate().execute(new HibernateCallback() {
			public Object doInHibernate(Session session)throws HibernateException {
				Query query = session.createQuery(sql);
				query.setMaxResults(1);
				return query.uniqueResult();
			}
		});
		return count.intValue();
	}



展开
收起
爱吃鱼的程序员 2020-06-22 14:12:12 501 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    把小写long换成大写Long想起来了,好久没写java了,给忘了,Long是对象类型,是long的包装类。应该是返回BigDecimal对象了long是原生数据类型,Object是对象当然出现cast异常啊亲,强制转换为Long对象,呃,认真点···回复<aclass='referer'target='_blank'>@李香进:相信自己啊,书上不一定就对,这书哎害你不浅···建议你看看java的源码对你或许有帮助,多想想比如强制转换系统替你做了什么,光会用不行,hibernate框架用得不好性能非常差,这也是很多人说这框架不好的原因我知道没法转,但是书上这么写。不知道有什么方法间接实现。我也用过跟你一模一样的接口,没出现什么问题,请问楼主用的哪本书上的例子《大型门户网站是这样炼成的》,电子工业出版社出版的,一本实战例子。<divclass="ref">

    引用来自“langaili”的答案

    <divclass="ref_body">把小写long换成大写Long

    long是个普通的数据类型,Long是经过封装的,可以和类一样使用,

    long和Long、int和Interger等等是一样的道理。

    2020-06-22 14:12:31
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
继承与功能组合 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载