openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shay Banon <kim...@gmail.com>
Subject RE: Getting all the ClassMetaDatas
Date Tue, 02 Jan 2007 22:42:39 GMT

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:kimchy@gmail.com] 
>> 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.


Mime
View raw message