2012-03-06 22 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,但我很好奇,如果我不知道一些关于休眠,但是这是一个老程序员的错误

相关问题