【问题标题】:Is it possible to lazy load for a non lazy relationship in Hibernate?是否可以在 Hibernate 中为非延迟关系延迟加载?
【发布时间】:2012-05-27 03:32:14
【问题描述】:

我通过 lazy 属性集 false 建立了父子关系,所以当我通过查询获取父类时,我也获取了他的子类。

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

有没有办法在我获取父级而不改变lazy=false关系时避免获取子级?

【问题讨论】:

  • 为什么不简单地将延迟加载配置从这种关系更改为“false”?是否有任何特定的限制或要求让您犹豫不决?

标签: hibernate lazy-loading


【解决方案1】:

不,这是不可能的。如果您只有一种不能获取关联的情况,您唯一可以做的就是使用 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;

【讨论】:

    猜你喜欢
    • 2012-05-21
    • 2014-07-20
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多