【发布时间】:2016-03-21 09:04:07
【问题描述】:
我是 Hibernate 的新手,使用 SetMaxResults() 函数时遇到了一些错误。这是我的 MySQL 表数据::
1 J. C. Smell
2 J. C. Smell
3 J. C. Smell
4 J. C. Smell
这是从4条相同记录中检索一条记录的方法。
private Person findPerson(Session session, String name){
Query query = session.createQuery("from Person p where p.name=:name");
query.setParameter("name", name);
query.setMaxResults(1);
Person person = (Person)query.list();
if(person == null)
return null;
return person;
}
我希望得到一条记录,但根据异常,我得到了一个 ArrayList 记录。例外来自这一行
Person person = (Person)query.list(); 那行在我的源代码中有编号 34。这是例外。
java.lang.ClassCastException: java.util.ArrayList cannot be cast to chapter3.simple.Person
at chapter3.simple.RankingTest.findPerson(RankingTest.java:34)
at chapter3.simple.RankingTest.savePerson(RankingTest.java:41)
at chapter3.simple.RankingTest.testSaveRanking(RankingTest.java:72)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
...
...
我做错了什么?谢谢
编辑
您好,setMaxResults(1) 不应该从记录中返回 1 个结果吗?
【问题讨论】: