You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@openjpa.apache.org by Miłosz Tylenda <mt...@o2.pl> on 2009/10/13 18:36:41 UTC

Re: Running CacheTest: class does not appear in the list ofpersistent types

Rohit,

If you don't want to create persistence.xml, you can specify persistent classes by calling AbstractTestCase.setUp(Object... props).

Regards,
Milosz
 
> 
> After some investigation I have resolved this issue.
> 
> These are my findings:
> 
> Yes It is necessary for all persistable entities to be defined in the
> persistence.xml files when running standalone.
> 
> It is important for the testcase to load the EMFs from the correct
> persistence.xml. The error below was due to loading an incorrect
> persistence.xml  in the test case.
> 
> The relevant code is in
> /openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/common/utils/AbstractTestCase.java
> 
> 
>     protected String computePersistenceXmlResource(String s) {
>         String resourceName = getClass().getPackage().getName()
>             .replaceAll("\\.", "/");
>         resourceName += "/common/apps/META-INF/persistence.xml";
>         URL resource =
> getClass().getClassLoader().getResource(resourceName);
>         
>         if (resource != null){
>             System.out.println("*** Loading persistence.xml "+
> resourceName);
>             return resourceName;
>         } else {
>             System.err.println("*** Could NOT find "+ resourceName+ " Now
> returning default persistence resource ");
>             return defaultPersistenceXmlResource();
>         }
>     }
> 
> I would really like for these log statements to get added to this testcase
> for future guidance.
> 
> --Thanks,
> Rohit Kelapure
> 
> 
> 
> 
> 
> 
> 
> 
> Rohit Kelapure wrote:
> > 
> > I am trying to execute org.apache.openjpa.persistence.datacache.CacheTest
> > with a custom cache provider. 
> > 
> > In spite of having ALL entity classes on the classpath when executing the
> > test, openJPA complains that 
> > the entity was not found in the list of persistent types.
> > 
> > <openjpa-2.0.0-SNAPSHOT-r422266:824213 fatal user error>
> > org.apache.openjpa.persistence.ArgumentException: No metadata was found
> > for type "class
> > org.apache.openjpa.persistence.datacache.common.apps.CacheObjectA". The
> > class does not appear in the list of persistent types:
> > [org.apache.openjpa.persistence.common.apps.Student, ...........].
> > 
> > When I decompiled CacheObjectA in
> > C:\open-jpa\openjpa-trunk\openjpa-persistence-jdbc\target\test-classes\org\apache\openjpa\persistence\datacache\common\apps,
> > I saw that CacheObjectA implements  PersistenceCapable which means that
> > the enhancer did its job.
> > 
> > The surefire plugin test classpath does contain the
> > C:\open-jpa\openjpa-trunk\openjpa-persistence-jdbc\target\test-classes dir
> > on its classpath
> > 
> > What does one need to do to get OpenJPA to recognize a persistence capable
> > class ?
> > Is it necessary for all persistable entities to be defined in the orm xml
> > files in addition to having the @Entity annotation ?
> > 
> > --Thanks,
> > Rohit Kelapure
> > 
> 
> -- 
> View this message in context: http://n2.nabble.com/Running-CacheTest-class-does-not-appear-in-the-list-of-persistent-types-tp3810164p3811051.html
> Sent from the OpenJPA Users mailing list archive at Nabble.com.
> 

Re: Running CacheTest: class does not appear in the list ofpersistent types

Posted by Rohit Kelapure <ke...@gmail.com>.
Thanks Milosz ! 



Miłosz Tylenda wrote:
> 
> Rohit,
> 
> If you don't want to create persistence.xml, you can specify persistent
> classes by calling AbstractTestCase.setUp(Object... props).
> 
> Regards,
> Milosz
>  
>> 
>> After some investigation I have resolved this issue.
>> 
>> These are my findings:
>> 
>> Yes It is necessary for all persistable entities to be defined in the
>> persistence.xml files when running standalone.
>> 
>> It is important for the testcase to load the EMFs from the correct
>> persistence.xml. The error below was due to loading an incorrect
>> persistence.xml  in the test case.
>> 
>> The relevant code is in
>> /openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/common/utils/AbstractTestCase.java
>> 
>> 
>>     protected String computePersistenceXmlResource(String s) {
>>         String resourceName = getClass().getPackage().getName()
>>             .replaceAll("\\.", "/");
>>         resourceName += "/common/apps/META-INF/persistence.xml";
>>         URL resource =
>> getClass().getClassLoader().getResource(resourceName);
>>         
>>         if (resource != null){
>>             System.out.println("*** Loading persistence.xml "+
>> resourceName);
>>             return resourceName;
>>         } else {
>>             System.err.println("*** Could NOT find "+ resourceName+ " Now
>> returning default persistence resource ");
>>             return defaultPersistenceXmlResource();
>>         }
>>     }
>> 
>> I would really like for these log statements to get added to this
>> testcase
>> for future guidance.
>> 
>> --Thanks,
>> Rohit Kelapure
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> Rohit Kelapure wrote:
>> > 
>> > I am trying to execute
>> org.apache.openjpa.persistence.datacache.CacheTest
>> > with a custom cache provider. 
>> > 
>> > In spite of having ALL entity classes on the classpath when executing
>> the
>> > test, openJPA complains that 
>> > the entity was not found in the list of persistent types.
>> > 
>> > <openjpa-2.0.0-SNAPSHOT-r422266:824213 fatal user error>
>> > org.apache.openjpa.persistence.ArgumentException: No metadata was found
>> > for type "class
>> > org.apache.openjpa.persistence.datacache.common.apps.CacheObjectA". The
>> > class does not appear in the list of persistent types:
>> > [org.apache.openjpa.persistence.common.apps.Student, ...........].
>> > 
>> > When I decompiled CacheObjectA in
>> >
>> C:\open-jpa\openjpa-trunk\openjpa-persistence-jdbc\target\test-classes\org\apache\openjpa\persistence\datacache\common\apps,
>> > I saw that CacheObjectA implements  PersistenceCapable which means that
>> > the enhancer did its job.
>> > 
>> > The surefire plugin test classpath does contain the
>> > C:\open-jpa\openjpa-trunk\openjpa-persistence-jdbc\target\test-classes
>> dir
>> > on its classpath
>> > 
>> > What does one need to do to get OpenJPA to recognize a persistence
>> capable
>> > class ?
>> > Is it necessary for all persistable entities to be defined in the orm
>> xml
>> > files in addition to having the @Entity annotation ?
>> > 
>> > --Thanks,
>> > Rohit Kelapure
>> > 
>> 
>> -- 
>> View this message in context:
>> http://n2.nabble.com/Running-CacheTest-class-does-not-appear-in-the-list-of-persistent-types-tp3810164p3811051.html
>> Sent from the OpenJPA Users mailing list archive at Nabble.com.
>> 
> 
> 

-- 
View this message in context: http://n2.nabble.com/Running-CacheTest-class-does-not-appear-in-the-list-of-persistent-types-tp3810164p3819347.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.