Почему createCriteria возвращает так много объектов?

Допустим, у меня есть класс, сопоставленный с hibernate, со множеством свойств, идентификатором и отсутствием отношения многие-к-одному, и его зовут MyClass. Я пытаюсь получить из базы данных все записи, поэтому я делаю следующее:

//omitted some code
Session session = sessionFactory.openSession();
List<MyClass> = session.createCriteria( MyClass.class ).list();

Для единственной записи в базе данных критерии возвращают мне 13 объектов в списке. Я не могу понять, почему, в то время как этот запрос:

//omitted some code
Session session = sessionFactory.openSession();
List<MyClass> = session.createQuery( "from MyClass" ).list();

Работает нормально, и возвращает только 1 объект. Может ли кто-нибудь объяснить это мне?

1 ответ

Решение

@ Да, но довольно глубоко спрятано @ Амир, спасибо за этот комментарий, он помог мне найти то, что было не так

Что ж, выясняется, что в файле отображения hibernate у меня есть небольшая вещь, связь с другим объектом, в котором есть список, определенный в файле отображения hibernate, и внутри этого списка определено отношение один ко многим, которое вызывало все проблема.

С самого начала решение было использовать createQuery вместо createCriteria, но мне было любопытно, если я не знаю что-нибудь о спящем режиме, но это была старая ошибка программиста

Другие вопросы по тегам