Hi Jakob,

The pk fields on the group/user objects are int primaries.  The jdbc pk fields
are INTEGER and the link fields fks are INTEGER.  The lookup is done using a
java.lang.Integer.  I'm using jdk1.5 so the int's _should_ be autoboxing.  I'll
change the group/user pk fields to java.lang.Integer in the morning (is late in
this part of the world - Australia) and let you know how it goes.

Thank you very much for your help, I appreciate it greatly.

Cheers
Adam

Quoting Jakob Braeuchi <[EMAIL PROTECTED]>:

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





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

Reply via email to