SetMaxResults() не работает должным образом в Hibernate ⇐ JAVA
-
Гость
SetMaxResults() не работает должным образом в Hibernate
Я новичок в Hibernate и получаю некоторые ошибки при использовании функции SetMaxResults(). Это данные моей таблицы MySQL:
1 Джей Си Запах 2 Джей Си Запах 3 Джей Си Запах 4 Джей Си Запах Это метод извлечения одной записи из 4 одинаковых записей:
private Person findPerson(сеанс сеанса, имя строки){ Запрос запроса = session.createQuery("от Person p, где p.name=:name"); query.setParameter("имя", имя); query.setMaxResults(1); Человек person = (Person)query.list(); если (человек == ноль) вернуть ноль; возвращаемый человек; } Я ожидаю получить одну запись, но в соответствии с исключением я получаю ArrayList записей. Исключение происходит из этой строки Person person = (Person)query.list(); В моем исходном коде эта строка имеет номер 34. Это исключение:
java.lang.ClassCastException: java.util.ArrayList нельзя привести к Chapter3.simple.Person в Chapter3.simple.RankingTest.findPerson(RankingTest.java:34) в Chapter3.simple.RankingTest.savePerson(RankingTest.java:41) в Chapter3.simple.RankingTest.testSaveRanking(RankingTest.java:72) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke(Method.java:606) в org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) в org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) в org.junit.runners.model.FrameworkMethod.invokeExplosically (FrameworkMethod.java:47) ... ... Что я делаю не так?
Изменить
Разве setMaxResults(1) не должен возвращать 1 результат из записей?
Я новичок в Hibernate и получаю некоторые ошибки при использовании функции SetMaxResults(). Это данные моей таблицы MySQL:
1 Джей Си Запах 2 Джей Си Запах 3 Джей Си Запах 4 Джей Си Запах Это метод извлечения одной записи из 4 одинаковых записей:
private Person findPerson(сеанс сеанса, имя строки){ Запрос запроса = session.createQuery("от Person p, где p.name=:name"); query.setParameter("имя", имя); query.setMaxResults(1); Человек person = (Person)query.list(); если (человек == ноль) вернуть ноль; возвращаемый человек; } Я ожидаю получить одну запись, но в соответствии с исключением я получаю ArrayList записей. Исключение происходит из этой строки Person person = (Person)query.list(); В моем исходном коде эта строка имеет номер 34. Это исключение:
java.lang.ClassCastException: java.util.ArrayList нельзя привести к Chapter3.simple.Person в Chapter3.simple.RankingTest.findPerson(RankingTest.java:34) в Chapter3.simple.RankingTest.savePerson(RankingTest.java:41) в Chapter3.simple.RankingTest.testSaveRanking(RankingTest.java:72) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke(Method.java:606) в org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) в org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) в org.junit.runners.model.FrameworkMethod.invokeExplosically (FrameworkMethod.java:47) ... ... Что я делаю не так?
Изменить
Разве setMaxResults(1) не должен возвращать 1 результат из записей?
Мобильная версия