代码之家  ›  专栏  ›  技术社区  ›  davek

为什么JPA不为延迟加载的关系提供loadChildren()方法?

  •  4
  • davek  · 技术社区  · 16 年前

    有时我想把一个关系定义为被懒惰地加载,因为90%的时候我不想要子实体,但在某些情况下,也有可能同时获得整个层次结构。我不想通过使用命名查询来实现这一点,因为当我转换为JSON格式时,父子层次结构非常有用。目前,我的恶意攻击是调用.getchildentities().size()来强制在同一个事务中执行延迟加载。

    有更好的方法吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   DataNucleus    16 年前

    当然,这取决于JPA的实现。有些(大多数)会用您引用的方法调用加载所有的元素,但有些可能会发出count(*)查询来获取大小,这也是由于内存管理的原因(不希望在有很多元素的情况下加载所有元素)

    ——安迪( DataNucleus )

        2
  •  0
  •   endryha    15 年前

    可能您可以使用join fetch子句

    http://download.oracle.com/docs/cd/E16764_01/apirefs.1111/e13046/ejb3_langref.html#ejb3_langref_fetch_joins

    第10.2.3.5.3章。JPQL获取联接