懒惰在hibernate中获取

时间:2015-03-19 17:11:48

标签: java jpa

class A{
    private List<B> bs;
}

class B{
    private String fieldA;
    @Basic(fetch = FetchType.LAZY)
    private String fieldB;
}

当我这样做时:

from A

它还返回我已初始化懒惰的fieldB数据。 为什么会这样? 我做错了什么?

1 个答案:

答案 0 :(得分:1)

  

JPA中的LAZY(与EAGER不同)仅仅是JPA实施的一个提示   可能会忽略。

无论LAZY / EAGER设置如何,ObjectDB都会急切地加载基本字段。

如果您想要延迟加载非常大的字符串 - 请将它们保存在单独的实体对象中。例如,您可以使用单个String字段定义实体类LargeString,将对LargeString的引用设置为LAZY。

或者,您可以使用查询仅检索选定的字段。但是,如果通常不需要这些字符串,那么将大字符串保留在单独的实体中可能会更有效。

Source1Source2