2012-03-06 26 views
1

假設我有一個用hibernate映射的類,有一堆屬性,一個id和多對一的關係,它的名字是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

什麼是每個由Hibernate生成的SQL查詢案件? – 2012-03-06 16:19:06

+0

MyClass裏面有一些集合屬性(一對多關係)嗎? – 2012-03-06 16:42:12

+0

以下是否返回一個項目:session.createCriteria(MyClass.class).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list()? – 2012-03-06 19:59:33

回答

0

@Ken肯定,但相當深隱 @Amir感謝這一評論,它幫助我找到什麼是錯

那麼它發現,在Hibernate映射文件我有一件小事,有關係另一個對象,其中有一個在hibernate映射文件中定義的列表,並且在這個列表中定義了一對多關係,這導致了所有的麻煩。

從一開始,解決方案是使用的createQuery,而不是個createCriteria,但我很好奇,如果我不知道一些關於休眠,但是這是一個老程序員的錯誤

相關問題