Hi Andy, Erik,
I'm currently testing SQL queries with candidate classes. I run into
exceptions and like to make sure that the tests are alright.
The first SQL query selects all columns from table PrimitiveTypes:
Query query = pm.newQuery("javax.jdo.query.SQL", "SELECT * FROM
PrimitiveTypes");
query.setClass(PrimitiveTypes.class);
query.execute()
Query execution throws an NPE thrown in JPOX code using application
identity (see below). Query execution succeeds using datastore identity.
The second SQL query selects two columns from table departments:
Query query = pm.newQuery("javax.jdo.query.SQL", "SELECT id, name
FROM departments");
query.setClass(Department.class);
query.execute()
Query execution throws a JDOFatalUserException using both identity types
(see below). It seems that JPOX tries to instantiate relationship field
"employees".
Are both queries valid?
Regards,
Michael
java.lang.NullPointerException
[java] at
org.jpox.store.mapping.SingleFieldMapping.getObject(SingleFieldMapping.java:296)
[java] at
org.jpox.store.rdbms.fieldmanager.ResultSetGetter.fetchObjectField(ResultSetGetter.java:101)
[java] at
org.jpox.state.StateManagerImpl.replacingObjectField(StateManagerImpl.java:2642)
[java] at
org.apache.jdo.tck.pc.mylib.PrimitiveTypes.jdoReplaceField(PrimitiveTypes.java)
[java] at
org.apache.jdo.tck.pc.mylib.PrimitiveTypes.jdoReplaceFields(PrimitiveTypes.java)
[java] at
org.jpox.state.StateManagerImpl.replaceFields(StateManagerImpl.java:2822)
[java] at
org.jpox.store.query.PersistentIDROF$1.fetchFields(PersistentIDROF.java:236)
[java] at
org.jpox.state.StateManagerImpl.<init>(StateManagerImpl.java:424)
[java] at
org.jpox.AbstractPersistenceManager.getObjectByAID(AbstractPersistenceManager.java:2254)
[java] at
org.jpox.store.query.PersistentIDROF.getObjectByAID(PersistentIDROF.java:231)
[java] at
org.jpox.store.query.PersistentIDROF.getObject(PersistentIDROF.java:182)
[java] at
org.jpox.store.query.ForwardQueryResult.nextResultSetElement(ForwardQueryResult.java:103)
[java] at
org.jpox.store.query.ForwardQueryResult.advanceToEndOfResultSet(ForwardQueryResult.java:93)
[java] at
org.jpox.store.query.ForwardQueryResult.size(ForwardQueryResult.java:356)
[java] at
org.apache.jdo.tck.query.QueryTest.equalsCollection(QueryTest.java:478)
[java] at
org.apache.jdo.tck.query.QueryTest.checkQueryResultWithoutOrder(QueryTest.java:406)
[java] at
org.apache.jdo.tck.query.QueryTest.execute(QueryTest.java:898)
[java] at
org.apache.jdo.tck.query.sql.AllowedAPIMethods.testSetClass(AllowedAPIMethods.java:95)
[java] at
sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)
[java] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[java] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[java] at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:204)
[java] at
org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:120)
[java] at
org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:95)
javax.jdo.JDOFatalUserException: Mapping
[EMAIL PROTECTED] not suitable for a SQL
result column, field = employees
[java] at
org.jpox.store.query.SQLQuery.performExecute(SQLQuery.java:295)
[java] at
org.jpox.store.query.Query.executeWithMap(Query.java:931)
[java] at
org.jpox.store.query.SQLQuery.executeWithArray(SQLQuery.java:186)
[java] at org.jpox.store.query.Query.execute(Query.java:833)
[java] at
org.apache.jdo.tck.query.QueryTest.execute(QueryTest.java:884)
[java] at
org.apache.jdo.tck.query.sql.AllowedAPIMethods.testSetClass(AllowedAPIMethods.java:95)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
[java] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[java] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[java] at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:204)
[java] at
org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:120)
[java] at
org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:95)
--
-------------------------------------------------------------------
Michael Watzek [EMAIL PROTECTED] Engineering GmbH
mailto:[EMAIL PROTECTED] Buelowstr. 66
Tel.: ++49/30/235 520 36 10783 Berlin - Germany
Fax.: ++49/30/217 520 12 http://www.spree.de/
-------------------------------------------------------------------