【问题标题】:Fetching nested objects when FetchType is LAZY当 FetchType 为 LAZY 时获取嵌套对象
【发布时间】:2012-05-22 19:40:26
【问题描述】:

我正在开发 EclipseLink,出于性能原因,我们在具有 OneToMany 关系的任何地方都设置了 FetchType.lazy。现在,持久性位于具有其他业务逻辑的第 1 层,然后还有一些其他 EAR 使用来自第 1 层的持久性。在获取这些对象时,我遇到了 elipselink 引发 ClassCast 异常的问题。稍微深入研究一下这个问题就会发现,这是因为跨多个耳朵的延迟加载。

现在我在想的是在第 1 层创建一个方法,如果他们想要加载所有对象,即急切加载机制,它将由其他耳朵调用。我想知道如何在 eclipselink 中实现这一点?

【问题讨论】:

    标签: java jpa persistence lazy-loading eclipselink


    【解决方案1】:

    EclipseLink 定义了允许强制加载关系的加载组。 复制 API 也可用于强制加载。

    看, http://wiki.eclipse.org/EclipseLink/Examples/JPA/AttributeGroup

    【讨论】:

    • 你能给我举个例子吗?我一直在研究文档,我很困惑。想象一下我的ClassA 中有一个属性personsclassApersons 具有 oneToMany 关系,即一个类可以有很多人,并且它已配置为 FetchType = lazy。我将如何加载它? Query.setHint(QueryHints.Loadgroup, "person"); ? (忽略编译/api 特定的错误)。
    【解决方案2】:

    EAR 不应像您那样相互依赖。您将使用类加载器创建一大堆问题。

    如果您有多个交互的服务或 web 应用程序,它们应该在同一个耳朵里。如果不是,则将通用 jar 文件复制到不同的耳朵。

    【讨论】:

    • 谢谢,我已经和前辈讨论过关于正确包装 EAR 的具体问题,但目前,我正在寻找我上面提到的问题的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2017-05-31
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    • 2012-11-12
    相关资源
    最近更新 更多