You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从OpenJPA(2.2.2)迁移至EclipseLink(2.5.2):求对应替代代码

原OpenJPA代码的核心是为Test实体指定查询时需抓取的特定属性,以下是对应的EclipseLink替代实现:

import org.eclipse.persistence.jpa.JpaEntityManager;
import org.eclipse.persistence.jpa.JpaHelper;

// 将通用EntityManager转换为EclipseLink专属JpaEntityManager
JpaEntityManager kem = JpaHelper.getEntityManager(em);

// 通过FetchGroup指定需抓取的属性(替代OpenJPA的FetchPlan)
kem.getFetchGroup().addAttribute("stringvalue");
kem.getFetchGroup().addAttribute("other string value");

// 显式指定实体类的写法(可选,若当前上下文未绑定Test实体时使用)
// kem.getFetchGroup(Test.class).addAttribute("stringvalue");
// kem.getFetchGroup(Test.class).addAttribute("other string value");

// 对应原逻辑:若原EntityManager并非EclipseLink原生实例,则关闭转换后的实例
if (!(em instanceof JpaEntityManager)) {
    kem.close();
}

补充说明

  • EclipseLink中FetchGroup对应OpenJPA的FetchPlan,用于控制实体属性的抓取策略。
  • 若需要自定义独立抓取组(而非使用默认组),可通过以下方式创建并设置:
    import org.eclipse.persistence.queries.FetchGroup;
    import java.util.Arrays;
    
    FetchGroup customFetchGroup = kem.getEntityManagerFactory()
                                    .getFetchGroupManager()
                                    .createFetchGroup("testCustomGroup");
    customFetchGroup.addAttributes(Arrays.asList("stringvalue", "other string value"));
    kem.setFetchGroup(customFetchGroup);
    

内容的提问来源于stack exchange,提问作者Arun Rajan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 10:33:17