EntityGraph - 您必须在描述符中定义一个提取组管理器,以便在查询上设置一个提取组

B. *_* J. 6 jpa eclipselink entitygraph

我想在 EclipseLink 和 GlassFish 中使用实体图。

    @Entity
    @NamedQueries({
         @NamedQuery(name = "invoice.all", query = "SELECT i FROM Invoice i")})


    @NamedEntityGraph(name = "graph.invoice",
                attributeNodes = {@NamedAttributeNode("invoiceNum")})

    @Table(name = "INVOICE")
    public class Invoice implements Serializable {
            private int id;
            private String bizonylatSzam;
            ...
        }

EntityManager em = getEntityManagerFactory().createEntityManager();
EntityGraph eg = em.createEntityGraph("graph.invoice");
List<Invoice> invoiceList =  em.createNamedQuery("invoice.all").setHint("javax.persistence.fetchgraph", eg).getResultList();
Run Code Online (Sandbox Code Playgroud)

如果我使用javax.persistence.loadgraph图形一切正常,但如果我使用javax.persistence.fetchgraph我有一个例外:

org.eclipse.persistence.exceptions.QueryException 异常说明:您必须在描述符 (Invoice) 中定义一个提取组管理器,以便在查询 (invoice.all) 上设置提取组

在 EclipseLink 网页中写:

... 使用编织技术..

Weaving 和 Java EE 应用服务器

默认的 EclipseLink 编织行为适用于使用 EclipseLink JPA 持久性提供程序的任何符合 Java EE JPA 的应用程序服务器。要更改此行为,请修改您的 persistence.xml 文件(针对您的 JPA 实体或 POJO 类)以使用 EclipseLink JPA 属性、EclipseLink JPA 注释或两者。

我不明白有什么问题。:(