Hibernate возвращает только один результат (после изменения имен таблиц) - PullRequest
6 голосов
/ 09 декабря 2011

Я использую hibernate для извлечения результатов из моей базы данных MySQL в свой проект Java.Недавно у меня было много избыточных данных, и мне пришлось вручную очистить базу данных, скопировав необходимые данные в новые таблицы и затем переименовав вновь созданную таблицу в старую таблицу.

Но теперь запрос к базе данных с помощью hibernate дает в результате только одну строку.Я вручную проверил базу данных, и в базе данных есть несколько разных строк.Мой запрос к Hibernate выглядит примерно так:

Criteria c = session.createCriteria(UserDto.class);
c.setMaxResults(100);
List<UserDto> users = c.list();

users содержит 100 элементов, но все они одинаковы.

Отображение userDto здесь .

Есть идеи, что здесь происходит?

Ответы [ 4 ]

1 голос
/ 12 декабря 2011

Если ваш класс UserDto имеет отношения ToMany, то вполне возможно, что внешнее соединение с ними приводит к множеству записей, которые содержат одни и те же пользовательские данные. Вы должны использовать

session.createCriteria(UserDto.class).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
0 голосов
/ 13 декабря 2011

Я думаю, причина в том, что эти записи имеют одинаковый идентификатор, поэтому Hibernate рассматривает их как одну и ту же запись.Вы можете проверить это.

0 голосов
/ 12 декабря 2011

Вы удалили старые таблицы?А в файле конфигурации какое значение для "hibernate.hbm2ddl.auto"?

0 голосов
/ 11 декабря 2011

Дважды проверьте соответствие класса UserDto базе данных. Я предполагаю, что у вас нет сопоставленного с таблицей, что вы думаете, что делаете. Как отметил Себастьен, установка hibernate.show.sql в true должна сделать это очевидным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...