用hql语句,如何查询一个表中主键最大的记录?
最好能举个例子说明,将这个方法的完整的写出来。
谢谢
最好能举个例子说明,将这个方法的完整的写出来。
谢谢
解决方案 »
- SSH项目 奇怪的错误,坐等高手解决
- ocx 控件 搞了一周了没有结果 下面我说下ocx 望版主推荐下介绍文章太少
- 使用struts1.3,如何从一个action转向另一个action?
- 运行Maven的命令mvn活着建立maven项目出现错误
- 关于一个form里面2个按钮,点击一个按钮之前,另一是灰色,点击后,另一个按钮可用
- struts2自定义类型转换器的问题
- webwork配置错误,请问是错在哪里?
- struts的标单验证,困扰了我好几天了。
- RMI运行时的问题ClassNotFoundExeption server.Server_stub
- 求Eclipse的使用方法的中文电子文档
- java 价格字段用什么类型好?
- 一个网络问题
Query q=hibernateSession.createQuery("select a.name,a.age from Table a order by a.id desc");
HibernateTemplate template = this.getHibernateTemplate();
return (Roles) template.executeFind(new HibernateCallback(){
public Object doInHibernate(Session arg0)
throws HibernateException, SQLException {
Query query = arg0.createQuery("from Roles r order by r.id desc");
return query.list().get(0);
}
});
}
帮我看看上面的方法哪里写错了,谢谢
在这里直接 .get(0)可能会出现空指针错误。
其他的没什么问题。
你什么异常呢?
public void testFindNewRoleId(){
Roles role = dao.findNewRoleId();
System.out.println(role.getId());
}
报以下异常:org.springframework.dao.InvalidDataAccessApiUsageException: Result object returned from HibernateCallback isn't a List: [com.tianlw.oss.rights.pojo.Roles@e3570c]
at org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:344)
at com.tianlw.oss.rights.dao.RolesDAOImpl.findNewRoleId(RolesDAOImpl.java:58)
at com.tianlw.oss.test.rights.RolesDAOTest.testFindNewRoleId(RolesDAOTest.java:65)
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 junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)是什么原因啊?
后面加上maxResult方法
那就对了。你不要.get(0)
该方法要求返回一个list
如果你get(0)就是一个实体。不符合方法的返回值要求。
去掉.get(0)即可。
int maxId = ((实体类型)list.get(list.size()-1)).getId();