是否有可能在Hibernate中为非惰性关系延迟加载?

时间:2012-05-25 08:31:07

标签: hibernate lazy-loading

我与 lazy 属性集 false 有一个父子关系,所以当我得到带有查询的父类时,我也会得到他的孩子。< / p>

通常最好加载所有东西,亲子,但在一种情况下我不需要这样做。

当我在不改变lazy = false关系的情况下获取父级时,是否有办法避免获取子项?

1 个答案:

答案 0 :(得分:4)

不,这是不可能的。如果您只有一个不能获取关联的情况,那么您可以做的唯一事情是使用DTO而不是您的实体,并使用投影来仅检索您想要的内容:

String hql = "select firstName, lastName from User u where ...";
List<Object[]> rows = session.createQuery(hql).list();
List<UserDTO> users = new ArrayList<UserDTO>(rows.size());
for (Object[] row : rows) {
    users.add(new User((String) row[0], (String) row[1]));
}
return users;