cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrus Adamchik <>
Subject Re: NullPointerException from call to removeToManyTarget
Date Thu, 12 Jul 2012 13:42:35 GMT
This has to be something mapping related. Unless your mapping is confidential, could you possibly
open a bug report at and attach the Map XML file,
and maybe a code snippet? 


On Jul 12, 2012, at 4:30 PM, Aaron Andersen wrote:

> Andrus,
> No problem, thank you for your reply!
> I am able to produce this bug without calling add at all. Simply calling 
> remove and then committing before calling anything else causes this behaviour.
> That is good to know about 3.0.2, but unfortunately it does not solve my 
> problem. I tried the 3.1 beta build hoping it would fix the problem when I first 
> discovered it, but it did not. This morning, after I read your email, I tried 
> 3.0.2 and the problem still exists.
> Any help would be greatly appreciated.
> Thank you!
> Aaron
> On July 12, 2012 02:07:43 PM Andrus Adamchik wrote:
>> Hi Aaron,
>> sorry for the late reply..
>> Are add... and remove... called in sequence after each other or is there a
>> commit between them?
>> Also going through release notes for 3.0.2, there were a few fixes related
>> to flattened relationships. While I can't say for sure that your issue was
>> addressed there, maybe it is worth upgrading before we dig any deeper?
>> Cheers,
>> Andrus
>> On Jul 5, 2012, at 4:23 AM, Aaron Andersen wrote:
>>> Hello,
>>> I am using Cayenne version 3.0.1 and having an issue.
>>> In CayenneModeler I have created an "Approver" DbEntity and a "Department"
>>> DbEntity (as well as the corresponding ObjEntity classes). I have also
>>> created an "Authorization" DbEntity to act as a join table for the
>>> Approver and Department tables. Every Approver object has a list of
>>> Department objects associated with it, and vice versa so in
>>> CayenneModeler I have added a "departmentArray" relationship to the
>>> Approver object which has "to many, list" semantics.
>>> When I use the Approver method "void addToDepartmentArray (Department)"
>>> everything works fine, but when I use the Approver method "void
>>> removeFromDepartmentArray (Department)" (which simple calls
>>> removeToManyTarget) a NullPointerException is thrown. A backtrace and
>>> quick
>>> debug tells me the null pointer exception originates from:
>>> org.apache.cayenne.access.DataDomainFlattenedBucket.addFlattenedDelete(Dat
>>> The code on lines 81 and 82 of this file are as follows:
>>> [81] List flattenedSnapshots =
>>> flattenedDeleteInfo.buildJoinSnapshotsForDelete(node);
>>> [82] if (!flattenedSnapshots.isEmpty()) {
>>> Inspecting flattenedSnapshots on line 82 shows that flattenedSnapshots is
>>> null hence accessing the isEmpty method is causing the null pointer
>>> exception.
>>> A couple of obvious points I can list off are:
>>> - both the approver and the department are not null
>>> - the department does belong to the approvers list of departments
>>> - both objects are in the same context
>>> I'm not sure what I am doing incorrect to cause this null pointer
>>> exception
>>> but I would really appreciate any help.
>>> Thank you for your time!
>>> Aaron

View raw message