Issue Details (XML | Word | Printable)

Key: OPENJPA-42
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Marc Prud'hommeaux
Reporter: Thomas Risberg
Votes: 0
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
OpenJPA

Simple orm.xml file causes exception (NPE)

Created: 07/Sep/06 10:26 PM   Updated: 03/Oct/06 05:55 PM
Return to search
Component/s: None
Affects Version/s: None
Fix Version/s: None

Time Tracking:
Not Specified

File Attachments:
  Size
Zip Archive Licensed for inclusion in ASF works OPENJPA-42.zip 2006-09-12 02:19 AM Thomas Risberg 3.89 MB
XML File Licensed for inclusion in ASF works orm.xml 2006-10-03 05:55 PM Marc Prud'hommeaux 4 kB
Zip Archive plainJpa.zip 2006-09-07 10:26 PM Thomas Risberg 5 kB
Environment:
Mac OS X
Java 5 SE
Resource Local

OpenJPA build from SVN rev. 441247

Resolution Date: 10/Sep/06 11:22 PM


 Description  « Hide
This simple orm.xml file causes a NPE -

<?xml version="1.0" encoding="UTF-8"?>

<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
    version="1.0">

  <package>springdeveloper.domain</package>

  <entity class="Client" metadata-complete="false" access="FIELD"></entity>
  <entity class="Manager" metadata-complete="false" access="FIELD">
    <attribute-override name="description">
      <column name="DESCR" length="2000"/>
    </attribute-override>
  </entity>

</entity-mappings>

I have attached a test case - plainJpa.zip

Same code runs fine with the RI.

This is the output from my run:

/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home/bin/java -Dfile.encoding=MacRoman -classpath /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/deploy.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/dt.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/plugin.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/sa-jdi.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jconsole.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/apple_provider.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/dnsns.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/localedata.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/sunjce_provider.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/sunpkcs11.jar:/Users/trisberg/Projects/plainJpa/classes:/Users/trisberg/Projects/plainJpa/lib/openjpa-jdbc-0.9.0-incubating-SNAPSHOT.jar:/Users/trisberg/Projects/plainJpa/lib/openjpa-persistence-0.9.0-incubating-SNAPSHOT.jar:/Users/trisberg/Projects/plainJpa/lib/openjpa-lib-0.9.0-incubating-SNAPSHOT.jar:/Users/trisberg/Projects/plainJpa/lib/openjpa-kernel-5-0.9.0-incubating-SNAPSHOT.jar:/Users/trisberg/Projects/plainJpa/lib/commons-collections-3.2.jar:/Users/trisberg/Projects/plainJpa/lib/geronimo-jta_1.0.1B_spec-1.0.1.jar:/Users/trisberg/Projects/plainJpa/lib/geronimo-j2ee-connector_1.5_spec-1.0.1.jar:/Users/trisberg/Projects/plainJpa/lib/commons-pool-1.3.jar:/Users/trisberg/Projects/plainJpa/lib/serp-1.11.0.jar:/Users/trisberg/Projects/plainJpa/lib/hsqldb.jar:/Users/trisberg/Projects/plainJpa/lib/persistence-api-1.0.jar:/Users/trisberg/Projects/plainJpa/lib/commons-logging-1.0.4.jar:/Users/trisberg/Projects/plainJpa/lib/commons-dbcp-1.2.1.jar:/Users/trisberg/Projects/plainJpa/lib/openjpa-persistence-jdbc-0.9.0-incubating-SNAPSHOT.jar:/Users/trisberg/Projects/plainJpa/lib/commons-lang-2.1.jar:/Users/trisberg/Projects/plainJpa/lib/openjpa-kernel-0.9.0-incubating-SNAPSHOT.jar:/Users/trisberg/Projects/plainJpa/lib/openjpa-jdbc-5-0.9.0-incubating-SNAPSHOT.jar springdeveloper.TestApp
OPenJPAVersion:
OpenJPA 0.9.0-incubating-SNAPSHOT
version id: 0.9.0-incubating-SNAPSHOT-r0
revision: 0

os.name: Mac OS X
os.version: 10.4.7
os.arch: ppc

java.version: 1.5.0_06
java.vendor: Apple Computer, Inc.

java.class.path:
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/deploy.jar
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/dt.jar
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/plugin.jar
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/sa-jdi.jar
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jconsole.jar
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/apple_provider.jar
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/dnsns.jar
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/localedata.jar
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/sunjce_provider.jar
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/sunpkcs11.jar
/Users/trisberg/Projects/plainJpa/classes
/Users/trisberg/Projects/plainJpa/lib/openjpa-jdbc-0.9.0-incubating-SNAPSHOT.jar
/Users/trisberg/Projects/plainJpa/lib/openjpa-persistence-0.9.0-incubating-SNAPSHOT.jar
/Users/trisberg/Projects/plainJpa/lib/openjpa-lib-0.9.0-incubating-SNAPSHOT.jar
/Users/trisberg/Projects/plainJpa/lib/openjpa-kernel-5-0.9.0-incubating-SNAPSHOT.jar
/Users/trisberg/Projects/plainJpa/lib/commons-collections-3.2.jar
/Users/trisberg/Projects/plainJpa/lib/geronimo-jta_1.0.1B_spec-1.0.1.jar
/Users/trisberg/Projects/plainJpa/lib/geronimo-j2ee-connector_1.5_spec-1.0.1.jar
/Users/trisberg/Projects/plainJpa/lib/commons-pool-1.3.jar
/Users/trisberg/Projects/plainJpa/lib/serp-1.11.0.jar
/Users/trisberg/Projects/plainJpa/lib/hsqldb.jar
/Users/trisberg/Projects/plainJpa/lib/persistence-api-1.0.jar
/Users/trisberg/Projects/plainJpa/lib/commons-logging-1.0.4.jar
/Users/trisberg/Projects/plainJpa/lib/commons-dbcp-1.2.1.jar
/Users/trisberg/Projects/plainJpa/lib/openjpa-persistence-jdbc-0.9.0-incubating-SNAPSHOT.jar
/Users/trisberg/Projects/plainJpa/lib/commons-lang-2.1.jar
/Users/trisberg/Projects/plainJpa/lib/openjpa-kernel-0.9.0-incubating-SNAPSHOT.jar
/Users/trisberg/Projects/plainJpa/lib/openjpa-jdbc-5-0.9.0-incubating-SNAPSHOT.jar
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/.compatibility/14compatibility.jar

user.dir: /Users/trisberg/Projects/plainJpa

TestApp!
119 INFO [main] openjpa.Runtime - Starting OpenJPA 0.9.0-incubating-SNAPSHOT
Exception in thread "main" <0|false|0.9.0-incubating-SNAPSHOT> org.apache.openjpa.persistence.PersistenceException: null
at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:183)
at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:139)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:171)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:124)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:50)
at springdeveloper.TestApp.run(TestApp.java:53)
at springdeveloper.TestApp.main(TestApp.java:27)
Caused by: java.lang.NullPointerException
at org.apache.openjpa.meta.ClassMetaData.getSuperclassField(ClassMetaData.java:820)
at org.apache.openjpa.meta.ClassMetaData.resolveDefinedSuperclassFields(ClassMetaData.java:1115)
at org.apache.openjpa.meta.ClassMetaData.defineSuperclassFields(ClassMetaData.java:1091)
at org.apache.openjpa.jdbc.meta.MappingRepository.prepareMapping(MappingRepository.java:314)
at org.apache.openjpa.meta.MetaDataRepository.loadMapping(MetaDataRepository.java:605)
at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:505)
at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:300)
at org.apache.openjpa.jdbc.meta.MappingRepository.getMapping(MappingRepository.java:279)
at org.apache.openjpa.jdbc.meta.MappingTool.getMapping(MappingTool.java:660)
at org.apache.openjpa.jdbc.meta.MappingTool.buildSchema(MappingTool.java:731)
at org.apache.openjpa.jdbc.meta.MappingTool.run(MappingTool.java:630)
at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:160)
at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:126)
at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:164)
... 6 more

Process finished with exit code 1



 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Marc Prud'hommeaux added a comment - 10/Sep/06 11:22 PM
The error message is a bad one (which I've committed a fix for), but the cause of it is that the orm.xml file is in error: as I mentioned in OPENJPA-40, the attribute-override element is, AFAIK, only meant to be used to redfine a field declared in a superclass entity. Since Manager doesn't actually have any Entity superclass, OpenJPA's assumption was causing an NPE. A better error message will now be thrown.

Thomas Risberg added a comment - 11/Sep/06 03:15 PM
You are right about the <attribute-override> - got to read the spec more carefully :)

I have been testing the recent MVN version 442043. I can run without an orm.xml file included but as soon as I include some additional mappings in an orm.xml file I get errors.

Here is some recent output:

This is the command I use to execute:

java -javaagent:./lib/openjpa-kernel-5-0.9.0-incubating-SNAPSHOT.jar -Dfile.encoding=MacRoman -classpath ./classes:./lib/openjpa-jdbc-0.9.0-incubating-SNAPSHOT.jar:./lib/openjpa-persistence-0.9.0-incubating-SNAPSHOT.jar:./lib/openjpa-lib-0.9.0-incubating-SNAPSHOT.jar:./lib/openjpa-kernel-5-0.9.0-incubating-SNAPSHOT.jar:./lib/commons-collections-3.2.jar:./lib/geronimo-jta_1.0.1B_spec-1.0.1.jar:./lib/geronimo-j2ee-connector_1.5_spec-1.0.1.jar:./lib/commons-pool-1.3.jar:./lib/serp-1.11.0.jar:./lib/hsqldb.jar:./lib/persistence-api-1.0.jar:./lib/commons-logging-1.0.4.jar:./lib/commons-dbcp-1.2.1.jar:./lib/openjpa-persistence-jdbc-0.9.0-incubating-SNAPSHOT.jar:./lib/commons-lang-2.1.jar:./lib/openjpa-kernel-0.9.0-incubating-SNAPSHOT.jar:./lib/openjpa-jdbc-5-0.9.0-incubating-SNAPSHOT.jar springdeveloper.TestApp


persistence.xml:
================
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">

    <persistence-unit name="main" transaction-type="RESOURCE_LOCAL">

      <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>

    </persistence-unit>

</persistence>

orm.xml:
========
<?xml version="1.0" encoding="UTF-8"?>

<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
    version="1.0">

  <package>springdeveloper.domain</package>

  <entity class="Client" metadata-complete="false" access="FIELD">
  </entity>
  <entity class="Manager" metadata-complete="false" access="FIELD">
    <attributes>
      <basic name="description">
        <column name="DESCR"/>
      </basic>
    </attributes>
  </entity>

</entity-mappings>

run:
====
739 INFO [main] openjpa.MetaData - Found 2 classes with metadata in 17 milliseconds.
TestApp!
364 INFO [main] openjpa.Runtime - Starting OpenJPA 0.9.0-incubating-SNAPSHOT
2353 INFO [main] openjpa.MetaData - Parsing resource "file:/Users/trisberg/Projects/plainJpa/classes/META-INF/orm.xml".
2787 INFO [main] openjpa.MetaData - Parsing class "springdeveloper.domain.Client".
2874 WARN [main] openjpa.Enhance - An exception was thrown while attempting to perform class file transformation on "springdeveloper/domain/Manager":
java.lang.ClassCircularityError: springdeveloper/domain/Manager
        at java.lang.Class.getDeclaredFields0(Native Method)
        at java.lang.Class.privateGetDeclaredFields(Class.java:2232)
        at java.lang.Class.getDeclaredFields(Class.java:1715)
        at org.apache.openjpa.meta.AbstractMetaDataDefaults.populateFromReflection(AbstractMetaDataDefaults.java:176)
        at org.apache.openjpa.meta.AbstractMetaDataDefaults.populate(AbstractMetaDataDefaults.java:128)
        at org.apache.openjpa.persistence.PersistenceMetaDataDefaults.populate(PersistenceMetaDataDefaults.java:182)
        at org.apache.openjpa.meta.MetaDataRepository.addMetaData(MetaDataRepository.java:736)
        at org.apache.openjpa.persistence.XMLPersistenceMetaDataParser.startClass(XMLPersistenceMetaDataParser.java:720)
        at org.apache.openjpa.lib.meta.CFMetaDataParser.startElement(CFMetaDataParser.java:101)
        at org.apache.openjpa.lib.meta.XMLMetaDataParser.startElement(XMLMetaDataParser.java:427)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:533)
        at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:708)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:330)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1693)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
        at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
        at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:371)
        at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:312)
        at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:289)
        at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:263)
        at org.apache.openjpa.persistence.PersistenceMetaDataFactory.parseXML(PersistenceMetaDataFactory.java:237)
        at org.apache.openjpa.persistence.PersistenceMetaDataFactory.load(PersistenceMetaDataFactory.java:188)
        at org.apache.openjpa.meta.MetaDataRepository.getMetaDataInternal(MetaDataRepository.java:432)
        at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:287)
        at org.apache.openjpa.enhance.PCEnhancer.<init>(PCEnhancer.java:164)
        at org.apache.openjpa.enhance.PCClassFileTransformer.transform(PCClassFileTransformer.java:115)
        at sun.instrument.TransformerManager.transform(TransformerManager.java:122)
        at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:155)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:242)
        at org.apache.openjpa.meta.MetaDataRepository.classForName(MetaDataRepository.java:1156)
        at org.apache.openjpa.meta.MetaDataRepository.loadPersistentTypes(MetaDataRepository.java:1144)
        at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:144)
        at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:126)
        at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:164)
        at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:139)
        at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:171)
        at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:124)
        at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:50)
        at springdeveloper.TestApp.run(TestApp.java:48)
        at springdeveloper.TestApp.main(TestApp.java:22)
3663 TRACE [main] openjpa.jdbc.SQL - <t 2202705, conn 10336536> [0 ms] executing prepstmnt 9136910 SELECT SEQUENCE_SCHEMA, SEQUENCE_NAME FROM INFORMATION_SCHEMA.SYSTEM_SEQUENCES
3784 TRACE [main] openjpa.jdbc.SQL - <t 2202705, conn 2205493> [5 ms] executing stmnt 4450231 CREATE TABLE Client (id BIGINT NOT NULL, description VARCHAR(255), version INTEGER, manager_id BIGINT, PRIMARY KEY (id))
3788 TRACE [main] openjpa.jdbc.SQL - <t 2202705, conn 6550654> [1 ms] executing stmnt 9974682 CREATE TABLE Manager (id BIGINT NOT NULL, DESCR VARCHAR(255), PRIMARY KEY (id))
3799 TRACE [main] openjpa.jdbc.SQL - <t 2202705, conn 4102499> [7 ms] executing stmnt 14712126 CREATE INDEX I_CLIENT_MANAGER ON Client (manager_id)
EM Open? true
Exception in thread "main" <4|true|0.9.0-incubating-SNAPSHOT> org.apache.openjpa.persistence.ArgumentException: Could not locate metadata for the class using alias "Manager". Registered alias mappings: "{Manager=null}"
        at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:361)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JPQLExpressionBuilder.java:166)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaData(JPQLExpressionBuilder.java:144)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:213)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:183)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateType(JPQLExpressionBuilder.java:176)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.access$500(JPQLExpressionBuilder.java:63)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.populate(JPQLExpressionBuilder.java:1666)
        at org.apache.openjpa.kernel.jpql.JPQLParser.populate(JPQLParser.java:52)
        at org.apache.openjpa.kernel.ExpressionStoreQuery.populateFromCompilation(ExpressionStoreQuery.java:145)
        at org.apache.openjpa.kernel.QueryImpl.newCompilation(QueryImpl.java:599)
        at org.apache.openjpa.kernel.QueryImpl.compileForCompilation(QueryImpl.java:581)
        at org.apache.openjpa.kernel.QueryImpl.compileForExecutor(QueryImpl.java:608)
        at org.apache.openjpa.kernel.QueryImpl.getOperation(QueryImpl.java:1421)
        at org.apache.openjpa.kernel.DelegatingQuery.getOperation(DelegatingQuery.java:120)
        at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:205)
        at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:254)
        at springdeveloper.MyTest.runQuery(MyTest.java:13)
        at springdeveloper.TestApp.run(TestApp.java:53)
        at springdeveloper.TestApp.main(TestApp.java:22)
samoa:~/Projects/plainJpa trisberg$

Marc Prud'hommeaux added a comment - 11/Sep/06 11:30 PM
Hmm ... the ClassCircularityError should have been resolved by my fix for OPENJPA-40. Can you make sure you re-built and deployed the built jars to your Spring installation? Just to be sure, you may want to update to the latest svn revision (442386).

If it still fails, can you attach a new test case (just like the one for OPENJPA-40) and I'll try to reproduce?

Thomas Risberg added a comment - 12/Sep/06 02:19 AM
Marc,

I saw your fix for the circular reference and I don't see the error message right now after checking out the latest (now at rev. 442412). I'm getting an error building, but the jars seem to be created anyway. This is the last part of the build messages:

[INFO] [jar:jar]
[INFO] Building jar: /Users/trisberg/Projects/OpenJPA/openjpa-all/target/openjpa-all-0.9.0-incubating-SNAPSHOT.jar
[INFO] ----------------------------------------------------------------------------
[INFO] Building OpenJPA Distribution
[INFO] task-segment: [clean, package]
[INFO] ----------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] 'attached' was specified in an execution, but not found in the plugin
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 minutes 5 seconds
[INFO] Finished at: Mon Sep 11 21:57:00 EDT 2006
[INFO] Final Memory: 16M/59M
[INFO] ------------------------------------------------------------------------

Anyway, I still get an exception executing my test - see attached zip file. Is this related to OPENJPA-44 since I do use the "metadata-complete" attribute?

Exception in thread "main" <4|true|0.9.0-incubating-SNAPSHOT> org.apache.openjpa.persistence.ArgumentException: Could not locate metadata for the class using alias "Manager". Registered alias mappings: "{Manager=null}"
        at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:362)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JPQLExpressionBuilder.java:166)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaData(JPQLExpressionBuilder.java:144)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:213)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:183)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateType(JPQLExpressionBuilder.java:176)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.access$500(JPQLExpressionBuilder.java:63)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.populate(JPQLExpressionBuilder.java:1666)
        at org.apache.openjpa.kernel.jpql.JPQLParser.populate(JPQLParser.java:52)
        at org.apache.openjpa.kernel.ExpressionStoreQuery.populateFromCompilation(ExpressionStoreQuery.java:145)
        at org.apache.openjpa.kernel.QueryImpl.newCompilation(QueryImpl.java:599)
        at org.apache.openjpa.kernel.QueryImpl.compileForCompilation(QueryImpl.java:581)
        at org.apache.openjpa.kernel.QueryImpl.compileForExecutor(QueryImpl.java:608)
        at org.apache.openjpa.kernel.QueryImpl.getOperation(QueryImpl.java:1421)
        at org.apache.openjpa.kernel.DelegatingQuery.getOperation(DelegatingQuery.java:120)
        at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:205)
        at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:254)
        at springdeveloper.MyTest.runQuery(MyTest.java:13)
        at springdeveloper.TestApp.run(TestApp.java:53)
        at springdeveloper.TestApp.main(TestApp.java:22)

Marc Prud'hommeaux added a comment - 12/Sep/06 02:48 AM
I'm surprised by the build error ... I haven't seen it before. However, I agree that it sounds like the jars are being built OK.

As for the "Could not locate metadata for the class.." error, that means that OpenJPA didn't load the class for some reason. If you change your query to query the full class name (e.g., change "select x from Manager x" to "select x from org.mypackage.Manager x"), do you get the same error? A better error message might result.

Also, if you want to attach the new test case, I can take a look.

Thomas Risberg added a comment - 12/Sep/06 03:03 AM
Marc,

I did attach a test case - OPENJPA-32.zip

This is the output and mapping files - fully qualified name did not work either.

persistence.xml:
================
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">

    <persistence-unit name="main" transaction-type="RESOURCE_LOCAL">

      <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>

    </persistence-unit>

</persistence>

orm.xml:
========
<?xml version="1.0" encoding="UTF-8"?>

<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
    version="1.0">

  <package>springdeveloper.domain</package>

  <entity class="Client" metadata-complete="false" access="FIELD"></entity>
  <entity class="Manager" metadata-complete="false" access="FIELD">
    <attributes>
      <basic name="description">
        <column name="DESCR" length="2000"/>
      </basic>
    </attributes>
  </entity>

</entity-mappings>

run:
====
TestApp!
172 INFO [main] openjpa.Runtime - Starting OpenJPA 0.9.0-incubating-SNAPSHOT
5019 TRACE [main] openjpa.jdbc.SQL - <t 14360544, conn 635451> [1 ms] executing prepstmnt 514941 SELECT SEQUENCE_SCHEMA, SEQUENCE_NAME FROM INFORMATION_SCHEMA.SYSTEM_SEQUENCES
5186 TRACE [main] openjpa.jdbc.SQL - <t 14360544, conn 5597932> [17 ms] executing stmnt 2898188 CREATE TABLE Client (id BIGINT NOT NULL, description VARCHAR(255), version INTEGER, manager_id BIGINT, PRIMARY KEY (id))
5190 TRACE [main] openjpa.jdbc.SQL - <t 14360544, conn 4491208> [1 ms] executing stmnt 7717566 CREATE TABLE Manager (id BIGINT NOT NULL, DESCR VARCHAR(2000), PRIMARY KEY (id))
5204 TRACE [main] openjpa.jdbc.SQL - <t 14360544, conn 9035974> [11 ms] executing stmnt 7059006 CREATE INDEX I_CLIENT_MANAGER ON Client (manager_id)EM Open? true
Exception in thread "main" <4|true|0.9.0-incubating-SNAPSHOT> org.apache.openjpa.persistence.ArgumentException: The type "class springdeveloper.domain.Manager" has not been enhanced.
        at org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1544)
        at org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1518)
        at org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.java:660)
        at org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:567)
        at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:500)
        at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:301)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JPQLExpressionBuilder.java:164)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaData(JPQLExpressionBuilder.java:133)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:213)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:183)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateType(JPQLExpressionBuilder.java:176)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.access$500(JPQLExpressionBuilder.java:63)
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.populate(JPQLExpressionBuilder.java:1666)
        at org.apache.openjpa.kernel.jpql.JPQLParser.populate(JPQLParser.java:52)
        at org.apache.openjpa.kernel.ExpressionStoreQuery.populateFromCompilation(ExpressionStoreQuery.java:145)
        at org.apache.openjpa.kernel.QueryImpl.newCompilation(QueryImpl.java:599)
        at org.apache.openjpa.kernel.QueryImpl.compileForCompilation(QueryImpl.java:581)
        at org.apache.openjpa.kernel.QueryImpl.compileForExecutor(QueryImpl.java:608)
        at org.apache.openjpa.kernel.QueryImpl.getOperation(QueryImpl.java:1421)
        at org.apache.openjpa.kernel.DelegatingQuery.getOperation(DelegatingQuery.java:120)
        at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:205)
        at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:254)
        at springdeveloper.MyTest.runQuery(MyTest.java:13)
        at springdeveloper.TestApp.run(TestApp.java:53)
        at springdeveloper.TestApp.main(TestApp.java:22)

Marc Prud'hommeaux added a comment - 03/Oct/06 05:54 PM
We've committed a number of fixes to the class loading framework when using the class transformer, which appears to make this work.

Note, though, there are some errors in your orm.xml: you didn't declare the <mapped-superclass class="Person"/>, and you put overridden attributes in the <attributes> section, rather than the <attribute-override> section (which the spec mandates). I'll attach the corrected orm.xml to this report.

Marc Prud'hommeaux added a comment - 03/Oct/06 05:55 PM
Corrected orm.xml file.