Hi, Do you have all your entities listed in persistence.xml? The exceptions below look like the list is either missing, or doesn't have a complete list of your entities.
-mike On Tue, May 19, 2009 at 2:23 AM, Prodoc <[email protected]> wrote: > > Hi, > > I don't know what I'm doing wrong but I can't seem to get OpenJPA to work > in > my project. I keep running into entity enhancement issues. The more methods > I try, to more problem it seems to be causing. > > *Using* > - NetBeans 6.5.1 > - Java jdk1.5.0_16 > - OpenJPA 1.2.1 > - Derby 10.5.1.1 > > *Structure* > - MPSF > - lib > - apache-openjpa-1.2.1 > - src > - META-INF > - mpsf > - entities > - build.xml > > If I leave 'RuntimeUnenhancedClasses' set to 'supported' I get the > following > error: > > > ------------------------------------------------------------------------------------------------- > 297 MPSFPU INFO [AWT-EventQueue-0] openjpa.Runtime - Starting OpenJPA > 1.2.1 > 875 MPSFPU INFO [AWT-EventQueue-0] openjpa.jdbc.JDBC - Using dictionary > class "org.apache.openjpa.jdbc.sql.DerbyDictionary". > 2187 MPSFPU INFO [AWT-EventQueue-0] openjpa.Enhance - Creating subclass > for "[class mpsf.entities.SearchDetection, class > mpsf.entities.RotationRate, > class mpsf.entities.Weapon, class mpsf.entities.Sensor, class > mpsf.entities.TrackDetection, class mpsf.entities.Environment, class > mpsf.entities.Trainer, class mpsf.entities.EngagementRange, class > mpsf.entities.KillProbability, class mpsf.entities.TimeOfFlight, class > mpsf.entities.Threat]". This means that your application will be less > efficient and will consume more memory than it would if you ran the OpenJPA > enhancer. Additionally, lazy loading will not be available for one-to-one > and many-to-one persistent attributes in types using field access; they > will > be loaded eagerly instead. > May 18, 2009 3:57:20 PM org.jdesktop.application.Application$1 run > SEVERE: Application class mpsf.MPSFApp failed to launch > <openjpa-1.2.1-r752877:753278 fatal user error> > org.apache.openjpa.persistence.ArgumentException: Errors encountered while > resolving metadata. See nested exceptions for details. > at > > org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:563) > at > > org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:308) > at > > org.apache.openjpa.enhance.ManagedClassSubclasser.configureMetaData(ManagedClassSubclasser.java:209) > at > > org.apache.openjpa.enhance.ManagedClassSubclasser.prepareUnenhancedClasses(ManagedClassSubclasser.java:165) > at > > org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:310) > at > > org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:228) > at > > org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:190) > at > > org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142) > at > > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192) > at > > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145) > at > > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56) > at mpsf.MPSFView.initComponents(MPSFView.java:181) > at mpsf.MPSFView.<init>(MPSFView.java:47) > at mpsf.MPSFApp.startup(MPSFApp.java:21) > at org.jdesktop.application.Application$1.run(Application.java:171) > at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) > at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) > at > > java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) > at > > java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) > at java.awt.EventDispatchThread.run(EventDispatchThread.java:110) > Caused by: <openjpa-1.2.1-r752877:753278 fatal user error> > org.apache.openjpa.persistence.ArgumentException: The type "class > mpsf.entities.SearchDetectionPK" has not been enhanced. > at > org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1652) > at > org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1626) > at > > org.apache.openjpa.meta.ValueMetaDataImpl.resolve(ValueMetaDataImpl.java:417) > at > > org.apache.openjpa.jdbc.meta.ValueMappingImpl.resolve(ValueMappingImpl.java:470) > at > org.apache.openjpa.meta.FieldMetaData.resolve(FieldMetaData.java:1674) > at > org.apache.openjpa.jdbc.meta.FieldMapping.resolve(FieldMapping.java:416) > at > org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1691) > at > org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1626) > at > > org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.java:717) > at > > org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:616) > at > > org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:541) > ... 21 more > NestedThrowables: > <openjpa-1.2.1-r752877:753278 fatal user error> > org.apache.openjpa.persistence.ArgumentException: Unable to resolve type > "mpsf.entities.Environment" due to previous errors resolving related type > "mpsf.entities.SearchDetection". > at > > org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.java:731) > at > > org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:616) > at > > org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:541) > at > > org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:308) > at > > org.apache.openjpa.enhance.ManagedClassSubclasser.configureMetaData(ManagedClassSubclasser.java:209) > at > > org.apache.openjpa.enhance.ManagedClassSubclasser.prepareUnenhancedClasses(ManagedClassSubclasser.java:165) > at > > org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:310) > at > > org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:228) > at > > org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:190) > at > > org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142) > at > > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192) > at > > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145) > at > > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56) > at mpsf.MPSFView.initComponents(MPSFView.java:181) > at mpsf.MPSFView.<init>(MPSFView.java:47) > at mpsf.MPSFApp.startup(MPSFApp.java:21) > at org.jdesktop.application.Application$1.run(Application.java:171) > at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) > at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) > at > > java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) > at > > java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) > at java.awt.EventDispatchThread.run(EventDispatchThread.java:110) > <openjpa-1.2.1-r752877:753278 fatal user error> > org.apache.openjpa.persistence.ArgumentException: Unable to resolve type > "mpsf.entities.RotationRate" due to previous errors resolving related type > "mpsf.entities.SearchDetection". > at > > org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.java:731) > at > > org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:616) > at > > org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:541) > at > > org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:308) > at > > org.apache.openjpa.enhance.ManagedClassSubclasser.configureMetaData(ManagedClassSubclasser.java:209) > at > > org.apache.openjpa.enhance.ManagedClassSubclasser.prepareUnenhancedClasses(ManagedClassSubclasser.java:165) > at > > org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:310) > at > > org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:228) > at > > org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:190) > at > > org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142) > at > > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192) > at > > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145) > at > > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56) > at mpsf.MPSFView.initComponents(MPSFView.java:181) > at mpsf.MPSFView.<init>(MPSFView.java:47) > at mpsf.MPSFApp.startup(MPSFApp.java:21) > at org.jdesktop.application.Application$1.run(Application.java:171) > at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) > at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) > at > > java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) > at > > java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) > at java.awt.EventDispatchThread.run(EventDispatchThread.java:110) > Exception in thread "AWT-EventQueue-0" java.lang.Error: Application class > mpsf.MPSFApp failed to launch > at org.jdesktop.application.Application$1.run(Application.java:177) > at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) > at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) > at > > java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) > at > > java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) > at java.awt.EventDispatchThread.run(EventDispatchThread.java:110) > Caused by: <openjpa-1.2.1-r752877:753278 fatal user error> > org.apache.openjpa.persistence.ArgumentException: Errors encountered while > resolving metadata. See nested exceptions for details. > at > > org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:563) > at > > org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:308) > at > > org.apache.openjpa.enhance.ManagedClassSubclasser.configureMetaData(ManagedClassSubclasser.java:209) > at > > org.apache.openjpa.enhance.ManagedClassSubclasser.prepareUnenhancedClasses(ManagedClassSubclasser.java:165) > at > > org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:310) > at > > org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:228) > at > > org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:190) > at > > org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142) > at > > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192) > at > > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145) > at > > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56) > at mpsf.MPSFView.initComponents(MPSFView.java:181) > at mpsf.MPSFView.<init>(MPSFView.java:47) > at mpsf.MPSFApp.startup(MPSFApp.java:21) > at org.jdesktop.application.Application$1.run(Application.java:171) > ... 7 more > Caused by: <openjpa-1.2.1-r752877:753278 fatal user error> > org.apache.openjpa.persistence.ArgumentException: The type "class > mpsf.entities.SearchDetectionPK" has not been enhanced. > at > org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1652) > at > org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1626) > at > > org.apache.openjpa.meta.ValueMetaDataImpl.resolve(ValueMetaDataImpl.java:417) > at > > org.apache.openjpa.jdbc.meta.ValueMappingImpl.resolve(ValueMappingImpl.java:470) > at > org.apache.openjpa.meta.FieldMetaData.resolve(FieldMetaData.java:1674) > at > org.apache.openjpa.jdbc.meta.FieldMapping.resolve(FieldMapping.java:416) > at > org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1691) > at > org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1626) > at > > org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.java:717) > at > > org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:616) > at > > org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:541) > ... 21 more > > ------------------------------------------------------------------------------------------------- > > Why do I get errors like 'The type "class mpsf.entities.SearchDetectionPK" > has not been enhanced.' while OpenJPA is supposed to be subclassing the > lot? > > Because I want to have the entities enhanced on a later stage anyway I > decided to deal with that right away in the hope to get things to work in > the first place. I set 'RuntimeUnenhancedClasses' to 'warn' and tried the > enhance at build time using ANT approaches. At least this got my program to > run in the first place but things are going wrong as soon as I try to > actually access the db. I'm always getting the following error using > different ANT configuration ways: > > > ------------------------------------------------------------------------------------------------- > 16 MPSFPU INFO [RunnableQueue-1] openjpa.Runtime - Starting OpenJPA > 1.2.1 > 16 MPSFPU INFO [RunnableQueue-1] openjpa.jdbc.JDBC - Using dictionary > class "org.apache.openjpa.jdbc.sql.DerbyDictionary". > 31 MPSFPU WARN [RunnableQueue-1] openjpa.Enhance - This configuration > disallows runtime optimization, but the following listed types were not > enhanced at build time or at class load time with a javaagent: "[class > mpsf.entities.SearchDetection, class mpsf.entities.RotationRate, class > mpsf.entities.Weapon, class mpsf.entities.Sensor, class > mpsf.entities.TrackDetection, class mpsf.entities.Environment, class > mpsf.entities.Trainer, class mpsf.entities.EngagementRange, class > mpsf.entities.KillProbability, class mpsf.entities.TimeOfFlight, class > mpsf.entities.Threat]". > <openjpa-1.2.1-r752877:753278 nonfatal user error> > org.apache.openjpa.persistence.ArgumentException: An error occurred while > parsing the query filter "SELECT d FROM mpsf.Entities.Threat d". Error > message: The name "mpsf.Entities.Threat" is not a recognized entity or > identifier. Known entity names: [] > at > > org.apache.openjpa.kernel.exps.AbstractExpressionBuilder.parseException(AbstractExpressionBuilder.java:118) > at > > org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JPQLExpressionBuilder.java:180) > at > > org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaData(JPQLExpressionBuilder.java:150) > at > > org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:225) > at > > org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:195) > at > > org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateType(JPQLExpressionBuilder.java:188) > at > > org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.access$600(JPQLExpressionBuilder.java:69) > at > > org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.populate(JPQLExpressionBuilder.java:1756) > at > org.apache.openjpa.kernel.jpql.JPQLParser.populate(JPQLParser.java:56) > at > > org.apache.openjpa.kernel.ExpressionStoreQuery.populateFromCompilation(ExpressionStoreQuery.java:153) > at > org.apache.openjpa.kernel.QueryImpl.newCompilation(QueryImpl.java:658) > at > > org.apache.openjpa.kernel.QueryImpl.compilationFromCache(QueryImpl.java:639) > at > > org.apache.openjpa.kernel.QueryImpl.compileForCompilation(QueryImpl.java:605) > at > org.apache.openjpa.kernel.QueryImpl.compileForExecutor(QueryImpl.java:667) > at > org.apache.openjpa.kernel.QueryImpl.getOperation(QueryImpl.java:1492) > at > > org.apache.openjpa.kernel.DelegatingQuery.getOperation(DelegatingQuery.java:123) > at > org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:243) > at > org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:294) > at mpsf.AddDeviceTool.getDeviceList(AddDeviceTool.java:182) > at mpsf.AddDeviceTool.access$400(AddDeviceTool.java:29) > at mpsf.AddDeviceTool$1.run(AddDeviceTool.java:70) > at org.apache.batik.util.RunnableQueue.run(Unknown Source) > at java.lang.Thread.run(Thread.java:595) > > ------------------------------------------------------------------------------------------------- > > The entity I try to use is 'Threat'. In the error above it states > 'mpsf.Entities.Threat'. I tried both 'Threat' and 'mpsf.Entities.Threat', > the latter incase I had to specify the packages but it didn't make any > difference. > > First attempt in build.xml: > > ------------------------------------------------------------------------------------------------- > <target name="enhance"> > <taskdef name="openjpac" > classname="org.apache.openjpa.ant.PCEnhancerTask"/> > <openjpac> > <fileset dir="."> > <include name="**/entities/*.java" /> > </fileset> > </openjpac> > </target> > > ------------------------------------------------------------------------------------------------- > > After some reading up [1] I got to the following with different inbetween > attempts in the hope to get a cleaner result then this: > > ------------------------------------------------------------------------------------------------- > <path id="jpa.enhancement.classpath"> > <pathelement location="bin"/> > <fileset dir="lib/apache-openjpa-1.2.1"> > <include name="**/*.jar"/> > </fileset> > </path> > > <target name="enhance"> > <copy includeemptydirs="false" todir="bin"> > <fileset dir="src" excludes="**/*.launch, **/*.java"/> > </copy> > <taskdef name="openjpac" > classname="org.apache.openjpa.ant.PCEnhancerTask"> > <classpath refid="jpa.enhancement.classpath"/> > </taskdef> > > <openjpac> > <classpath refid="jpa.enhancement.classpath"/> > </openjpac> > </target> > > ------------------------------------------------------------------------------------------------- > > All attempts just result in the same: none of the entities get enhanced, > never are there any known entity names. > The mentioned website does include an additional 'depends="build"' > attribute > in the target element but doing so results in a different error: 'Target > "build" does not exist in the project "MPSF". It is used from target > "enhance".' > > What is it that I keep doing wrong? What does it take to get the entities > enhanced? > > I hope you can help me out. > > Yours, > > Age Bosma > > P.s. As you might have figured, I'm new to JPA and ANT. > > [1] > http://webspherepersistence.blogspot.com/2009/02/openjpa-enhancement.html > -- > View this message in context: > http://n2.nabble.com/Enhancing-entities%3A-getting-desperate-tp2937944p2937944.html > Sent from the OpenJPA Users mailing list archive at Nabble.com. > >
