openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Dick <michael.d.d...@gmail.com>
Subject Re: Enhancing entities: getting desperate
Date Tue, 19 May 2009 12:43:09 GMT
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 <age@hobba.nl> 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.
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message