cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brian Nelson <briannelso...@yahoo.com>
Subject Error when adding and then removing object from relationship before committing
Date Wed, 30 Apr 2008 05:04:16 GMT
Let me start this post by thanking the Cayenne dev team for their great work. The project I'm
working on switched from Hibernate to Cayenne several months ago. I can honestly say the decision
to switch is one of the best things that ever happened to my project.

Now on to my problem...

I have a situation where I 

1. Add a newly created object to a relationship. 

        EstimateRoom room = context.newObject(EstimateRoom.class);

        // Several lines configuring variables in room
        
        floorModel.getEstimate().addToRooms(room);

2. Remove the object from the relationship

        estimate.removeFromRooms(obj);
    	context.deleteObject(obj);

3. Attempt to commit to the parent DataContext

This works as long as the object is the last element contained in the List maintaining the
relationship. If it is in the middle of the List(I sort the list after the room is inserted)
then
I receive the following exception.


[v.3.0M3 Jan 27 2008 20:12:33] Commit Exception
org.apache.cayenne.CayenneRuntimeException: [v.3.0M3 Jan 27 2008 20:12:33] Commit Exception
	at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1207)
	at org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:1088)
	at com.logicalsolutions.estimator.estimate.EstimatePanel.onApply(EstimatePanel.java:1522)
	at com.logicalsolutions.estimator.estimate.EstimatePanel.vaidateAndSave(EstimatePanel.java:1386)
	at
com.logicalsolutions.estimator.estimate.EstimatePanel$20.actionPerformed(EstimatePanel.java:1323)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.NullPointerException: Attempt to add null target DataObject.
	at org.apache.cayenne.CayenneDataObject.addToManyTarget(CayenneDataObject.java:262)
	at
org.apache.cayenne.reflect.generic.DataObjectToManyProperty.addTarget(DataObjectToManyProperty.java:72)
	at org.apache.cayenne.access.ChildDiffLoader$1.visitToMany(ChildDiffLoader.java:131)
	at
org.apache.cayenne.reflect.generic.DataObjectToManyProperty.visit(DataObjectToManyProperty.java:112)
	at org.apache.cayenne.access.ChildDiffLoader.arcCreated(ChildDiffLoader.java:119)
	at org.apache.cayenne.access.ObjectDiff$ArcOperation.apply(ObjectDiff.java:445)
	at org.apache.cayenne.graph.CompoundDiff.apply(CompoundDiff.java:92)
	at org.apache.cayenne.access.ObjectStoreGraphDiff.apply(ObjectStoreGraphDiff.java:135)
	at org.apache.cayenne.access.DataContext.onContextFlush(DataContext.java:1135)
	at org.apache.cayenne.access.DataContext.onSync(DataContext.java:1117)
	at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1175)
	... 29 more


So a few questions...
1. Is it OK to sort the Lists that represent the relationships.

2. Is this a known issue with a workaround. Yes I've searched, and searched, and searched
both the
mailing list and JIRA.

3. How do I get more information about what's really going on in Cayenne. Is there a way to
see
more than what is included in the Exception stack trace.


Any help is very much appreciated!

Brian







Mime
View raw message