hi adam,

make sure the instvars representing the pk are of the same type (ie. Integer).
the comment on line 405 points to this direction.

jakob

[EMAIL PROTECTED] schrieb:
Hi Jakob,

Thanks for the quick response.  I'm using the 1.0.1 release.

The npe occuring at line 408 (snippet below).  In the scenario I'm running both
'list' and 'child' are null.  The npe is from the 'list.add' call.

    405             // Identities may not be equal due to type-mismatch
    406             Collection list = (Collection) ownerIdsToLists.get(ownerId);
    407             Object child = childMap.get(childId);
    408             list.add(child);

Cheers
Adam

Quoting Jakob Braeuchi <[EMAIL PROTECTED]>:


hi,

what version of ojb are you using ? could you please provide the line number

where the npe occurs ?

jakob

[EMAIL PROTECTED] schrieb:



Hi All,

I'm firing this at both lists as I can't figure out whether it's a bug in

the

code or my mapping.

I'm trying to accomplish a pretty simple mn relationship (user/group type
arrangement).   The mapping file for the section in question is attached

below.

I have some test data (also below, in dbunit dataset format) which I've
verified in the database and everytime I try to load a group it throws a

null

pointer at me. Any assistance would be appreciated. Let me know if you

would

like any more information.


:Mapping File:

      <class-descriptor
               class="com.interlinkj.ac.User"
               table="USERS"
       row-reader="com.interlinkj.db.UserRowReader">
               <field-descriptor
                       name="id"
                       column="id"
                       jdbc-type="INTEGER"
                       primarykey="true"
                       autoincrement="true"/>
               <field-descriptor
                       name="firstName"
                       column="firstname"
                       jdbc-type="VARCHAR"
           nullable="false"/>
               <field-descriptor
                       name="lastName"
                       column="lastname"
                       jdbc-type="VARCHAR"
           nullable="false"/>
               <field-descriptor
                       name="userName"
                       column="username"
                       jdbc-type="VARCHAR"
           nullable="false"/>
               <field-descriptor
                       name="passwordHash"
                       column="credentials"
                       jdbc-type="VARCHAR"
           nullable="false"/>
               <collection-descriptor
               name="groups"
               element-class-ref="com.interlinkj.ac.Group"
               indirection-table="USER_GROUP_LINK"
               auto-delete="link"
               auto-update="object"
           auto-retrieve="true"
           orderby="id"
           sort="ASC"
       >
        <fk-pointing-to-this-class column="user_id"/>
        <fk-pointing-to-element-class column="group_id"/>
       </collection-descriptor>
       </class-descriptor>

       <class-descriptor
               class="com.interlinkj.ac.Group"
               table="GROUPS"
       row-reader="com.interlinkj.db.GroupRowReader">
                       <field-descriptor
                               name="id"
                               column="id"
                               jdbc-type="INTEGER"
                               primarykey="true"
                               autoincrement="true"/>
                       <field-descriptor
                               name="name"
                               column="name"
                               jdbc-type="VARCHAR"
               nullable="false"/>
           <field-descriptor
               name="description"
               column="description"
               jdbc-type="VARCHAR"
               nullable="true"/>
           <field-descriptor
               name="type"
               column="type"
               jdbc-type="VARCHAR"
               nullable="false"
               conversion="com.interlinkj.db.GroupTypeConversion"/>
           <collection-descriptor
               name="users"
               element-class-ref="com.interlinkj.ac.User"
               indirection-table="USER_GROUP_LINK"
               auto-delete="link"
               auto-update="object"
               auto-retrieve="true"
               orderby="id"
               sort="ASC"
           >
                <fk-pointing-to-this-class column="group_id"/>
                <fk-pointing-to-element-class column="user_id"/>
           </collection-descriptor>
       </class-descriptor>

:Test Data (for those not familiar with DBUnit, the element name is the

table,

the attributes are the columns, and each element represents a row [in

order]):

<dataset>
     <GROUPS id="1" type="Designer Group" name="Designer Group"
description="This is a designer group."/>
     <GROUPS id="2" type="Data Entry Group" name="Data Entry Group"
description="This is a data entry group."/>
     <USERS id="1" firstname="Bernard" lastname="Black"

username="blblack"

credentials="jamjamjam"/>
     <USERS id="2" firstname="Manny" lastname="Bianco" username="manny"
credentials="brilliant"/>
     <USER_GROUP_LINK group_id="1" user_id="1"/>
     <USER_GROUP_LINK group_id="2" user_id="2"/>
</dataset>


:Stack Trace:

java.lang.NullPointerException
       at


org.apache.ojb.broker.accesslayer.MtoNCollectionPrefetcher.associateBatched(Unknown

Source)
       at


org.apache.ojb.broker.accesslayer.MtoNCollectionPrefetcher.prefetchRelationship(Unknown

Source)
       at


org.apache.ojb.broker.core.QueryReferenceBroker.performRetrievalTasks(Unknown

Source)
       at


org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown Source)

       at


org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown Source)

       at


org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown Source)

       at
org.apache.ojb.broker.core.QueryReferenceBroker.retrieveCollection(Unknown

Source)

       at
org.apache.ojb.broker.core.QueryReferenceBroker.retrieveCollections(Unknown

Source)

       at
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(Unknown

Source)

at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown

Source)

       at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getObjectByQuery(Unknown

Source)

       at


org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(Unknown

Source)
       at


org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(Unknown

Source)
       at com.interlinkj.db.DatabaseManager.loadByFieldValue(Unknown

Source)

       at com.interlinkj.db.GroupManager.loadById(Unknown Source)
       at

com.interlinkj.db.TestGroupManager.testLoadWithIndividualUser(Unknown

Source)
       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:585)
       at junit.framework.TestCase.runTest(TestCase.java:154)
       at junit.framework.TestCase.runBare(TestCase.java:127)


:Calling Code:

           Criteria crit = new Criteria();
           crit.addEqualTo("id", new Integer(1));
           Query q = newQuery(Group.class, crit);
           broker = newPersistenceBroker(); //just a helper method to

default

broker
           Object tmp = broker.getObjectByQuery(q);

           //Null pointer before it gets here

           if(tmp == null){
               throw new FindException(
                   getShortClassName(clazzToLoad) +
                   " with " +
                   fieldName +
                   " of " +
                   fieldValue +
                   " does not exist."
               );
           }
           return (T)tmp;




------------------------------------------------------------ This email was sent from Netspace Webmail: http://www.netspace.net.au


--------------------------------------------------------------------- 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]








------------------------------------------------------------
This email was sent from Netspace Webmail: http://www.netspace.net.au


--------------------------------------------------------------------- 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]



Reply via email to