Hi Marthen, I too faced similar problem. That time my data objects were in a java project while my jdo-config was in a web project( web project in-turn had project reference to this java project). The java project had app-engine jar's in its class path, but still enhancement did not happen when the project was build.
As a work around i moved my data classes to web project and then it worked. Dont know the reason for this though. Perhaps could be an issue with eclipse plugin only. Thanks Hari 2010/7/1 Marthen <marthen...@gmail.com> > Hi guys, > > I have an simple application running on top of Spring using JPA for > Google AppEngine (GAE). > > There's no compilation error, but when i load my application using > Google AppEngine Development Server, i got runtime error saying that > my Entity class is not enhanced!! > Which kinda confusing me actually, because i deployed to another > container (tomcat) and this Entity classes is running smoothly (of > course i need to modify the persistence.xml accordingly) > > Here is my persistence.xml : > > <?xml version="1.0" encoding="UTF-8"?> > <persistence xmlns="http://java.sun.com/xml/ns/persistence" > version="1.0"> > <persistence-unit name="myDB"> > > <provider>org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider</ > provider> > <properties> > <property name="datanucleus.NontransactionalRead" value="true"/> > <property name="datanucleus.NontransactionalWrite" value="true"/> > <property name="datanucleus.ConnectionURL" value="appengine"/> > </properties> > </persistence-unit> > </persistence> > > > > My Entity class : > > @Entity > @Table(name = "audit_trail") > public class AuditTrail implements java.io.Serializable { > private static final long serialVersionUID = 1L; > private Integer id; > > @Id > @GeneratedValue(strategy = GenerationType.IDENTITY) > @Column(name = "id", nullable = false) > public Integer getId() { > return id; > } > > public void setId(Integer id) { > this.id = id; > } > > private String message; > > @Column(name = "message") > public String getMessage() { > return message; > } > > public void setMessage(String msg) { > this.message = msg; > } > } > > > > And this is the error code: > > 10-07-01 11:18:22 ERROR [] [main] MetaData - Found Meta-Data for class > com.somecompany.demo.model.AuditTrail but this class is not enhanced!! > Please enhance the class before running DataNucleus. > org.datanucleus.exceptions.NucleusUserException: Found Meta-Data for > class com.somecompany.demo.model.AuditTrail but this class is not > enhanced!! Please enhance the class before running DataNucleus. > at > > org.datanucleus.metadata.MetaDataManager.initialiseClassMetaData(MetaDataManager.java: > 2225) > at > > org.datanucleus.metadata.MetaDataManager.initialiseFileMetaData(MetaDataManager.java: > 2176) > at > > org.datanucleus.metadata.MetaDataManager.initialiseFileMetaDataForUse(MetaDataManager.java: > 881) > at > > org.datanucleus.metadata.MetaDataManager.loadPersistenceUnit(MetaDataManager.java: > 794) > at > > org.datanucleus.jpa.EntityManagerFactoryImpl.initialisePMF(EntityManagerFactoryImpl.java: > 488) > at > > org.datanucleus.jpa.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java: > 355) > at > > org.datanucleus.store.appengine.jpa.DatastoreEntityManagerFactory.<init>(DatastoreEntityManagerFactory.java: > 63) > at > > org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider.createEntityManagerFactory(Datastor > ePersistenceProvider.java:35) > at javax.persistence.Persistence.createFactory(Persistence.java:172) > at > javax.persistence.Persistence.createEntityManagerFactory(Persistence.java: > 112) > at > > org.springframework.orm.jpa.LocalEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalEnti > tyManagerFactoryBean.java:91) > at > > org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManage > rFactoryBean.java:291) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(Abstr > actAutowireCapableBeanFactory.java:1369) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(Abstract > AutowireCapableBeanFactory.java:1335) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAu > towireCapableBeanFactory.java:473) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory > $1.run(AbstractAutowireCapableBeanFactory.java:409) > at java.security.AccessController.doPrivileged(Native Method) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAuto > wireCapableBeanFactory.java:380) > at org.springframework.beans.factory.support.AbstractBeanFactory > $1.getObject(AbstractBeanFactory.java:264) > at > > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingleton > BeanRegistry.java:222) > at > > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java: > 261 > ) > at > > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java: > 185) > at > > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java: > 164) > at > > org.springframework.orm.jpa.EntityManagerFactoryUtils.findEntityManagerFactory(EntityManagerFactoryU > tils.java:99) > at > > org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findNamedEntityManagerFac > tory(PersistenceAnnotationBeanPostProcessor.java:488) > at > > org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findEntityManagerFactory( > PersistenceAnnotationBeanPostProcessor.java:470) > at > org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor > > $PersistenceElement.resolveEntityManager(PersistenceAnnotationBeanPostProcessor.java: > 599) > at > org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor > > $PersistenceElement.getResourceToInject(PersistenceAnnotationBeanPostProcessor.java: > 570) > at org.springframework.beans.factory.annotation.InjectionMetadata > $InjectedElement.inject(InjectionMetadata.java:192) > at > > org.springframework.beans.factory.annotation.InjectionMetadata.injectMethods(InjectionMetadata.java: > 117) > at > > org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessPropertyValues > (PersistenceAnnotationBeanPostProcessor.java:321) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAu > towireCapableBeanFactory.java:998) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAu > towireCapableBeanFactory.java:472) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory > $1.run(AbstractAutowireCapableBeanFactory.java:409) > at java.security.AccessController.doPrivileged(Native Method) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAuto > wireCapableBeanFactory.java:380) > at org.springframework.beans.factory.support.AbstractBeanFactory > $1.getObject(AbstractBeanFactory.java:264) > at > > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingleton > BeanRegistry.java:222) > at > > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java: > 261 > ) > at > > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java: > 185) > at > > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java: > 164) > at > > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitio > nValueResolver.java:269) > at > > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDe > finitionValueResolver.java:104) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(Abs > tractAutowireCapableBeanFactory.java:1245) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAu > towireCapableBeanFactory.java:1010) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAu > towireCapableBeanFactory.java:472) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory > $1.run(AbstractAutowireCapableBeanFactory.java:409) > at java.security.AccessController.doPrivileged(Native Method) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAuto > wireCapableBeanFactory.java:380) > at org.springframework.beans.factory.support.AbstractBeanFactory > $1.getObject(AbstractBeanFactory.java:264) > at > > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingleton > BeanRegistry.java:222) > at > > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java: > 261 > ) > at > > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java: > 185) > at > > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java: > 164) > at > > org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(Defaul > tListableBeanFactory.java:429) > at > > org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(Abstr > actApplicationContext.java:728) > at > > org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.ja > va:380) > at > > org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java: > 255) > at > > org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java: > 199) > at > > org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java: > 45) > at > org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java: > 548) > at org.mortbay.jetty.servlet.Context.startContext(Context.java:136) > at > org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java: > 1250) > at > org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java: > 517) > at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java: > 467) > at > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java: > 50) > at > org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java: > 130) > at > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java: > 50) > at > org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java: > 130) > at org.mortbay.jetty.Server.doStart(Server.java:224) > at > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java: > 50) > at > > com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.ja > va:185) > at > > com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.jav > a:146) > at > > com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java: > 222) > at com.google.appengine.tools.development.DevAppServerMain > $StartAction.apply(DevAppServerMain.java:171) > at com.google.appengine.tools.util.Parser > $ParseResult.applyArgs(Parser.java:48) > at > > com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java: > 120) > at > > com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java: > 96) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: > 39) > at > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: > 25) > at java.lang.reflect.Method.invoke(Method.java:597) > at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90) > > > I am using Spring 2.5.6, Google SDK 1.3.4, JDK 1.6 > > Appreciate your help. > > Thanks, > Marthen > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine for Java" group. > To post to this group, send email to > google-appengine-j...@googlegroups.com. > To unsubscribe from this group, send email to > google-appengine-java+unsubscr...@googlegroups.com<google-appengine-java%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/google-appengine-java?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.