You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by "Andy Malakov (JIRA)" <ji...@apache.org> on 2005/12/16 17:33:47 UTC

[jira] Updated: (OJB-83) NullPointerException in SqlQueryStatement OJB 1.0.3

     [ http://issues.apache.org/jira/browse/OJB-83?page=all ]

Andy Malakov updated OJB-83:
----------------------------

    Attachment: testcase.zip

Added test case attachment:

Please do the following to reproduce:
 
1. Initialize your schema using OJB-test-tablealiasbug.SQL .
 
2. Run class test.tablealiasbug.TestTableAliasBug - it is JUnit testcase that also has main(). 
 


> NullPointerException in SqlQueryStatement OJB 1.0.3
> ---------------------------------------------------
>
>          Key: OJB-83
>          URL: http://issues.apache.org/jira/browse/OJB-83
>      Project: OJB
>         Type: Bug
>   Components: PB-API
>     Versions: 1.0.3, 1.0.4
>  Environment: Windows, Oracle 9.2
>     Reporter: Andy Malakov
>  Attachments: testcase.zip
>
> Hello All,
> When org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.TableAlias is used for abstract class (has extent classes declared, but not mapped to any table itself) it may initialized with tableName=null. This situation later produces a problem, because tableName is being used for TableAlias identity (equals/hashcode):
> java.lang.NullPointerException
>  at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias.hashCode(SqlQueryStatement.java:1977)
>  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(SqlQueryStatement.java:1686)
>  at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.<init>(SqlQueryStatement.java:132)
>  at org.apache.ojb.broker.accesslayer.sql.SqlSelectStatement.<init>(SqlSelectStatement.java:64)
>  at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.getSubQuerySQL(SqlQueryStatement.java:976)
>  at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.appendSubQuery(SqlQueryStatement.java:957)
>  at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.appendParameter(SqlQueryStatement.java:942)
>  at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.appendInCriteria(SqlQueryStatement.java:770)
>  at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.appendCriteria(SqlQueryStatement.java:849)
>  at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.appendSQLClause(SqlQueryStatement.java:922)
>  at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.asSQLStatement(SqlQueryStatement.java:671)
>  at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.appendClause(SqlQueryStatement.java:592)
>  at org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.appendWhereClause(SqlQueryStatement.java:544)
>  at org.apache.ojb.broker.accesslayer.sql.SqlSelectStatement.getStatement(SqlSelectStatement.java:243)
>  at org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.getPreparedSelectStatement(SqlGeneratorDefaultImpl.java:151)
>  at org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeQuery(JdbcAccessImpl.java:305)
>  at org.apache.ojb.broker.accesslayer.RsQueryObject.performQuery(RsQueryObject.java:74)
>  at org.apache.ojb.broker.accesslayer.RsIterator.<init>(RsIterator.java:185)
>  at org.apache.ojb.broker.core.RsIteratorFactoryImpl.createRsIterator(RsIteratorFactoryImpl.java:58)
>  at org.apache.ojb.broker.core.PersistenceBrokerImpl.getRsIteratorFromQuery(PersistenceBrokerImpl.java:1918)
>  at org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorFromQuery(PersistenceBrokerImpl.java:1493)
>  at org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java:112)
>  at org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java:251)
>  at org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java:271)
>  at org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java:1367)
>  at org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(DelegatingPersistenceBroker.java:338)
>  at org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(DelegatingPersistenceBroker.java:338)
> Additional information: Unfortunately problem remains in OJB_1_0_RELEASE.
> Please look at SqlQueryStatement [line 128]:  m_root =
> createTableAlias(m_baseCld, hints=null, path="");
> When above line is called for abstract class descriptor (the one that has
> extent, but not mapped to a table itself) empty path causes variable
> lookForExtents=false, which in turn will result in
> TableAlias.tableName=null.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


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