2012-03-06 3 views
1

Предположим, что у меня есть класс, сопоставленный спящим, с множеством свойств, идентификатором и отношениями «много-к-одному» и его именем является MyClass. То, что я пытаюсь сделать, это получить из базы данных всех записей, так что я такая вещь:Почему createCriteria возвращает столько объектов?

//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 объект. Может ли кто-нибудь объяснить это мне?

+0

Каких запросы SQL, порожденные спящим режимом в каждом дело? –

+0

У MyClass есть свойство коллекции внутри (отношение «один ко многим»)? –

+0

Возвращает ли один из следующих элементов: session.createCriteria (MyClass.class) .setResultTransformer (Criteria.DISTINCT_ROOT_ENTITY) .list()? –

ответ

0

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

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

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

Смежные вопросы