首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

hql查询最大id值报错,该怎么解决

2013-08-01 
hql查询最大id值报错//得到Business最大的id@Override@Transactional(propagationPropagation.REQUIRED)p

hql查询最大id值报错

//得到Business最大的id
@Override
@Transactional(propagation=Propagation.REQUIRED)
public long findBusinessIdMAX() throws WuliuguanliException {
Session session=null;
session=factory.getCurrentSession();
String hql="select max(b.id) from Business b";
Query query=session.createQuery(hql);
Long count=(Long) query.uniqueResult();
return count;
}


我数据库里的id是int类型,而hibernate查询后的返回值是Long类型,我应该怎么做才不会报下面的错误:
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
at com.wuliuguanli.dao.impl.WuliuguanliDaoImpl.findBusinessIdMAX(WuliuguanliDaoImpl.java:138)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy9.findBusinessIdMAX(Unknown Source)
at test.Testdao.test7(Testdao.java:29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)


at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

hql 数据库
[解决办法]
 int count=((Long) query.uniqueResult()).intValue(); 
[解决办法]
 Long count=(Long) query.uniqueResult();
改为
 Long count=query.uniqueResult();
[解决办法]
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
这句话说明了,是从int  转为Long错误,你这样测试,打印int 值看下,如果有值,说明是强制转换有问题
[解决办法]
把值改成一种类型就OK了啊,要不改int,要不改long
[解决办法]
是类型转换的错误,前几天我也遇到这样的错误,因为数据库在oracle 10G  换到11G  并且在IBM小型机上运行的就报这样的错误 然后调节一下类型就好了
[解决办法]
3楼的方法应该可以的

热点排行