下面是我从书上看到的代码,结果报错: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(); }
把小写long换成大写Long想起来了,好久没写java了,给忘了,Long是对象类型,是long的包装类。应该是返回BigDecimal对象了long是原生数据类型,Object是对象当然出现cast异常啊亲,强制转换为Long对象,呃,认真点···回复<aclass='referer'target='_blank'>@李香进:相信自己啊,书上不一定就对,这书哎害你不浅···建议你看看java的源码对你或许有帮助,多想想比如强制转换系统替你做了什么,光会用不行,hibernate框架用得不好性能非常差,这也是很多人说这框架不好的原因我知道没法转,但是书上这么写。不知道有什么方法间接实现。我也用过跟你一模一样的接口,没出现什么问题,请问楼主用的哪本书上的例子《大型门户网站是这样炼成的》,电子工业出版社出版的,一本实战例子。<divclass="ref">
long是个普通的数据类型,Long是经过封装的,可以和类一样使用,
long和Long、int和Interger等等是一样的道理。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。