persistence@glassfish.java.net

RE: persistence Digest 2 Mar 2010 21:57:16 -0000 Issue 870

From: Douglas Clarke <DOUGLAS.CLARKE_at_ORACLE.COM>
Date: Wed, 3 Mar 2010 07:28:46 -0800 (PST)

Gary,

To access the underlying metamodel (Project -* Descriptor -* Mapping) you need to cast and un-wrap the native EntityManagerImpl. In container managed the container will provide its own wrapper so you will need to call getDelegate and cast the result.

((oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl) em.getDelegate()).getServerSession().getProject();

The project has a map of descriptors keyed by entity class.

The only wrinkle in this is that getDelegate() will return null if you are not within a transaction.

Doug
  -----Original Message-----
  From: Gary Jacobson [mailto:gtjacobson_at_gmail.com]
  Sent: March 3, 2010 5:45 AM
  To: persistence_at_glassfish.dev.java.net
  Subject: Re: persistence Digest 2 Mar 2010 21:57:16 -0000 Issue 870


  Hi Doug

  I am injecting the EntityManager into my session beans as follows:

      @PersistenceContext
      protected EntityManager em;

  I could inject the factory if that will make things easier.

  Gary




    ---------- Forwarded message ----------
    From: Douglas Clarke <DOUGLAS.CLARKE_at_oracle.com>
    To: persistence_at_glassfish.dev.java.net
    Date: Mon, 1 Mar 2010 04:15:35 -0800 (PST)
    Subject: RE: List of entity classes

    Gary,

    TopLink Essentials has its own native metamodel you can use as well. Do you have access to an EntityManagerFactory in your usage or just managed EntityManager instances?

    Doug
      -----Original Message-----
      From: Gary Jacobson [mailto:gtjacobson_at_gmail.com]
      Sent: March 1, 2010 3:52 AM
      To: persistence_at_glassfish.dev.java.net
      Subject: Re: List of entity classes


      Thanks Doug

      Unfortunately I am stuck with Toplink Essentials 2.0... do you know of any equivalent class/method I could use?


        ---------- Forwarded message ----------
        From: Douglas Clarke <DOUGLAS.CLARKE_at_oracle.com>
        To: persistence_at_glassfish.dev.java.net
        Date: Thu, 25 Feb 2010 04:24:22 -0800 (PST)
        Subject: RE: List of entity classes

        If you are using the latest JPA 2.0 version of EclipseLink you can use:

        EntityManagerFactory.getMetamodel();

        Doug
          -----Original Message-----
          From: Gary Jacobson [mailto:gtjacobson_at_gmail.com]
          Sent: February 25, 2010 7:00 AM
          To: persistence_at_glassfish.dev.java.net
          Subject: List of entity classes


          Hi all

          Is there any way to retrieve a list of the entity classes available in the application? (i.e. any class with @Entity annotated)

          The only way I can think to do this is to use native SQL to get a list of all database table names, convert them to class names by using my naming convention, and loading each class via reflection.

          I would guess that there must be some internal toplink utility class which maintains a list.

          Thanks
          Gary