为什么createCriteria会返回这么多对象?

时间:2012-03-06 16:15:23

标签: java hibernate

假设我有一个用hibernate映射的类,有一堆属性,一个id和多对一关系,它的名字是MyClass。我想要做的是从数据库获取所有记录,所以我做了这样的事情:

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

对于数据库中的SINGLE记录,条件会在列表中返回13个对象。我无法理解为什么,这个查询:

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

正常工作,只返回1个对象。有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:0)

@Ken是的,但隐藏得很深 @Amir感谢您的评论,它帮助我找到了什么错误

嗯,它发现,在hibernate映射文件中我有一个小东西,与另一个对象的关系,其中有一个在hibernate映射文件中定义的列表,并且在这个列表中定义了一对多的关系,造成了所有麻烦。

从一开始解决方案是使用createQuery而不是createCriteria,但我很好奇,如果我不知道有关hibernate的东西,但这是一个老程序员的错误