我想使用休眠条件查询仅获取集合的一部分。例如,假设我有一个包含多个 Student 对象的 Class 对象。现在我想获得一个课程列表,但只有德国学生应该被提取到学生集合中(其余的不需要并且会是巨大的开销),只需一个数据库查询。
在 hibernate 的更高版本中(我认为在 3.6.4 之前),这可以通过使用过滤的 createCriteria 来完成,如下所示:
criteria.createCriteria("students", "studentscollection", Criteria.LEFT_JOIN,
Restrictions.eq("studentscollection.country", "DE"));
问题在于,在当前版本的休眠中,这会使集合未初始化并触发大量数据库查询以加载每个访问时的单个集合的整个集合。这是一个巨大的性能问题,导致数百个查询而不是一个。
当前休眠版本中是否有任何解决方案可以使用一个查询完成此操作?