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]
