hi joshua,
what version of ojb are you using ? is it ok to use hashcode 0 if no table is available.
jakob
Phillips, Joshua (NIH/NCI) schrieb:
The collection-descriptor for an abstract class does not have a table attribute. So, when SqlQueryStatement.splitCriteria is called, a NullPointerException is thrown when it tries to put the root TableAlias into the m_jointTreeToCriteria HashMap, because SqlQueryStatement.TableAlias.hashCode looks like this:
public int hashCode() { return table.hashCode(); }
...and table is null.
The code that I used to produce this error looks like this:
PersistenceBroker pb = PersistenceBrokerFactory .defaultPersistenceBroker(); Criteria subCrit = new Criteria(); subCrit.addEqualTo("id", new Long(1)); ReportQueryByCriteria assocPBQ = QueryFactory.newReportQuery( BaseInterface.class, subCrit); assocPBQ.setAttributes(new String[] { "id" }); Criteria crit = new Criteria(); crit.addIn("base.id", assocPBQ); QueryByCriteria q = (QueryByCriteria) QueryFactory.newQuery( BaseAssocInterface.class, crit, true); Collection c = pb.getCollectionByQuery(q);
The stack trace looks like this:
Caused by: java.lang.NullPointerException at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias.hashCode( Unknown Source) at java.util.HashMap.hash(HashMap.java:261) at java.util.HashMap.put(HashMap.java:379) at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.splitCriteria(Unknow n 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.SqlQueryStatement.getSubQuerySQL(Unkno wn Source) at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.appendSubQuery(Unkno wn Source) at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.appendParameter(Unkn own Source) at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.appendInCriteria(Unk nown Source) at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.appendCriteria(Unkno wn Source) at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.appendSQLClause(Unkn own Source) at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.asSQLStatement(Unkno wn Source) at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.appendClause(Unknown Source) at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.appendWhereClause(Un known Source) at org.apache.ojb.broker.accesslayer.sql.SqlSelectStatement.getStatement(Unknow n 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.RsQueryObject.performQuery(Unknown Source) at org.apache.ojb.broker.accesslayer.RsIterator.<init>(Unknown Source) at org.apache.ojb.broker.core.RsIteratorFactoryImpl.createRsIterator(Unknown 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) ... 20 more
Joshua Phillips
Contractor (SAIC)
Tel: 301 451 6346
Fax: 301 480 4222
[EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
