You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by Jakob Braeuchi <jb...@gmx.ch> on 2005/01/12 18:56:58 UTC

Re: BUG [CVS HEAD] : unable to query for classes which mappings h ave been altered dynamically

hi robert,

imo the error occurs on line 162, where the entry is casted to ForeignKey

...
                 for (int i = 0; i < fkFields.size(); i++)
                 {
                     ForeignKey fk = (ForeignKey) fkFields.get(i);
                     FieldDescriptor fkfd;
...

this could only happen when the foreign key vector is set manually 
(using setForeignKey).

jakob

Janssen, Roger schrieb:
> used cvs head from last friday (7th januari, about 13:00 hour)
> rebuild ojb using 'ant clean jar-debug' using ant 1.6.2 and JDK1.4
> executed my testcases using new db-ojb-1.1.0.jar
> 
> below is the stacktrace:
> 
> ibanx.persistence.query.QueryException:
> org.apache.ojb.broker.PersistenceBrokerException: Can't query for collection
> 	at ibanx.persistence.ojb.QueryMgrPB.execute(QueryMgrPB.java:1255)
> 	at
> ibanx.persistence.test.DynamicMappingTest.testQueryDynamicCollectionDescript
> or(DynamicMappingTest.java:399)
> 	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:324)
> 	at junit.framework.TestCase.runTest(TestCase.java:154)
> 	at junit.framework.TestCase.runBare(TestCase.java:127)
> 	at junit.framework.TestResult$1.protect(TestResult.java:106)
> 	at junit.framework.TestResult.runProtected(TestResult.java:124)
> 	at junit.framework.TestResult.run(TestResult.java:109)
> 	at junit.framework.TestCase.run(TestCase.java:118)
> 	at junit.framework.TestSuite.runTest(TestSuite.java:208)
> 	at junit.framework.TestSuite.run(TestSuite.java:203)
> 	at
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRu
> nner.java:325)
> 	at
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestR
> unner.java:536)
> Caused by: org.apache.ojb.broker.PersistenceBrokerException: Can't query for
> collection
> 	at
> org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown
> Source)
> 	at
> org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Unknow
> n Source)
> 	at
> org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(
> Unknown Source)
> 	at
> org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(
> Unknown Source)
> 	at ibanx.persistence.ojb.QueryMgrPB.execute(QueryMgrPB.java:1169)
> 	... 15 more
> Caused by: java.lang.ClassCastException
> 	at
> org.apache.ojb.broker.metadata.ObjectReferenceDescriptor.getForeignKeyTarget
> FieldDescriptors(Unknown Source)
> 	at
> org.apache.ojb.broker.accesslayer.sql.TableAliasHandler.getTableAlias(Unknow
> n Source)
> 	at
> org.apache.ojb.broker.accesslayer.sql.TableAliasHandler.buildJoinTreeForAttr
> ibute(Unknown Source)
> 	at
> org.apache.ojb.broker.accesslayer.sql.TableAliasHandler.buildJoinTree(Unknow
> n Source)
> 	at
> org.apache.ojb.broker.accesslayer.sql.TableAliasHandler.buildJoinTree(Unknow
> n Source)
> 	at
> org.apache.ojb.broker.accesslayer.sql.TableAliasHandler.splitCriteria(Unknow
> n Source)
> 	at
> org.apache.ojb.broker.accesslayer.sql.TableAliasHandler.<init>(Unknown
> Source)
> 	at
> org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.<init>(Unknown
> Source)
> 	at
> org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.<init>(Unknown
> Source)
> 	at
> org.apache.ojb.broker.accesslayer.sql.SqlSelectStatement.<init>(Unknown
> Source)
> 	at
> org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.getPreparedSel
> ectStatement(Unknown Source)
> 	at
> org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeQuery(Unknown
> Source)
> 	at
> org.apache.ojb.broker.accesslayer.batch.BatchManagerImpl.executeQuery(Unknow
> n Source)
> 	at
> org.apache.ojb.broker.accesslayer.RsQueryObject.performQuery(Unknown Source)
> 	at org.apache.ojb.broker.accesslayer.RsIterator.<init>(Unknown
> Source)
> 	at
> org.apache.ojb.broker.accesslayer.RsIteratorFactoryImpl.createRsIterator(Unk
> nown Source)
> 	at
> org.apache.ojb.broker.core.PersistenceBrokerImpl.getRsIteratorFromQuery(Unkn
> own Source)
> 	at
> org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorFromQuery(Unknow
> n Source)
> 	at
> org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown
> Source)
> 	at
> org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown
> Source)
> 	... 19 more
> 
> 
> Roger Janssen
> 
> -----Original Message-----
> From: Thomas Dudziak [mailto:tomdzk@gmail.com]
> Sent: Tuesday, January 11, 2005 3:12 PM
> To: OJB Users List
> Subject: Re: BUG [CVS HEAD] : unable to query for classes which mappings
> h ave been altered dynamically
> 
> 
> The problem is that your OJB jar does not contain line information,
> hence the "(Unknown Source)" statements in the stacktrace. Could you
> rebuild OJB using the "clean" and "jar-debug" Ant targets and then
> execute your program again ? Otherwise it is a bit difficult to locate
> the error.
> 
> PS: If you're using Java 5, then you need the newest Ant build file
> from CVS head, where I added the debug options for Java 5 (per
> default, Java 5's javac won't generate line informations even when
> compiling with the -g option).
> 
> regards,
> Tom
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org