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]