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

时间:2017-11-16 20:15:39

标签: 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();

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

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

在EclipseLink网页上写:

  

......使用Weaving technologi ..

     

编织和Java EE应用程序服务器

     

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

我不明白这是什么问题。 :(

0 个答案:

没有答案