I still need to provide a classloader for this method. Another thing, I get only the classes, where I need to ClassMetaData in order to check if it extends another mapped class (in such cases I exclude it from the indexing process since the select of the base class will return the derived classes as well).
I was wondering if maybe I work in the same way the MappingTool works (since it needs to get all the ClassMappings as well). I had a quick look at the code, an it does some stuff that I am not sure that I should do. What do you say? Patrick Linskey wrote: > > What happens if you use MetaDataRepository.getPersistentTypeNames() > instead? > > -Patrick > > -- > Patrick Linskey > BEA Systems, Inc. > > _______________________________________________________________________ > Notice: This email message, together with any attachments, may contain > information of BEA Systems, Inc., its subsidiaries and affiliated > entities, that may be confidential, proprietary, copyrighted and/or > legally privileged, and is intended solely for the use of the individual > or entity named in this message. If you are not the intended recipient, > and have received this message in error, please immediately return this > by email and then delete it. > >> -----Original Message----- >> From: Shay Banon [mailto:[EMAIL PROTECTED] >> Sent: Tuesday, January 02, 2007 12:34 AM >> To: open-jpa-dev@incubator.apache.org >> Subject: Re: Getting all the ClassMetaDatas >> >> >> I tried to open the entity manager before I get the >> ClassMetaData, but I >> still get an empty array. Here is what I do: >> >> OpenJPAEntityManagerFactory emf = >> OpenJPAPersistence.cast(entityManagerFactory); >> EntityManager entityManager = emf.createEntityManager(); >> entityManager.close(); >> >> ClassMetaData[] classMetaDatas = >> emf.getConfiguration().getMetaDataRepositoryInstance().getMetaDatas(); >> >> I do enumerate the classes in my persistence context, and I >> can see in the >> logging that OpenJPA parses the classes. >> >> >> Marc Prud wrote: >> > >> > Shay- >> > >> > Have you already obtained an EM from the EMF before you make this >> > call? If you try to get the metadatas after calling >> > emf.getEntityManager(), do you still see an empty list? >> > >> > Also, note that unless you enumerate the classes in your >> > persistence.xml file (in the <class> elements), the only way the >> > system will be able to know about your classes before they >> are lazily >> > evaluated is if you enable one of the scanning features (e.g., but >> > packaging all your classes in a jar and specifying the <jar-file> >> > element in the persistence.xml, which will be automatically >> scanned >> > for persistent classes). >> > >> > You might want to enable verbose logging and watch the make >> sure the >> > class metadatas are registered before you try to get the list from >> > the repository. >> > >> > >> > >> > On Jan 1, 2007, at 4:11 PM, Shay Banon wrote: >> > >> >> >> >> Hi, >> >> >> >> First, I hope that this is the correct forum for posting >> >> questions, so >> >> sorry if it isn't. >> >> >> >> I have an external list of classes that I would like to match >> >> against the >> >> persistent classes that are defined/identified by OpenJPA. >> I would >> >> really >> >> like to get the ClassMetaData for each one, since it has a lot of >> >> information that I could use. This intersection happens after the >> >> EntityManagerFactory has been created. >> >> >> >> I have tried using:ClassMetaData[] classMetaDatas = >> >> >> emf.getConfiguration().getMetaDataRepositoryInstance().getMetaDatas(); >> >> >> >> But it seems like the meta data repository and ClassMetaData >> >> information are >> >> lazily loaded (i.e. when some operation is performed on a >> Class, the >> >> relevant meta data is fetched if not found in cache). So, what I >> >> get is an >> >> empty array (even though I can see the OpenJPA identified the >> >> classes). >> >> >> >> I wonder how I would be able to get all the class meta data? >> >> >> >> Something that I was thinking about is since I have the list of >> >> classes that >> >> I would like to check if they are persistent, I could call: >> >> getMetaData(Class cls, ClassLoader envLoader, boolean >> mustExist), with >> >> Thread context class loader and false in mustExists. I am >> guessing >> >> that it >> >> will load the ClassMetaData if not found. My main problem >> here is that >> >> OpenJPA might be configured with a different class loader >> (though it >> >> defaults to the thread context one). >> >> >> >> Any suggestions? >> >> >> >> p.s. >> >> >> >> I am the author of Compass, so once I have this nailed down, we >> >> will have >> >> Search capabilities to OpenJPA ;) >> >> >> >> -- >> >> View this message in context: >> http://www.nabble.com/Getting-all-the- >> >> ClassMetaDatas-tf2905426.html#a8116958 >> >> Sent from the open-jpa-dev mailing list archive at Nabble.com. >> >> >> > >> > >> > >> >> -- >> View this message in context: >> http://www.nabble.com/Getting-all-the-ClassMetaDatas-tf2905426 > .html#a8121096 >> Sent from the open-jpa-dev mailing list archive at Nabble.com. >> >> > > -- View this message in context: http://www.nabble.com/Getting-all-the-ClassMetaDatas-tf2905426.html#a8132249 Sent from the open-jpa-dev mailing list archive at Nabble.com.