I'm experimenting with App Engine, using JDO and DataNucleus for
persistence. I have a simple domain that includes several
unidirectional relationships. The question comes with nesting those
relationships:

    * Civilization -(1-1)-> Clan
    * Civilization -(1-1)-> Land
    * Civilization -(1-1)-> Military -(1-N)-> Armies (this is
inconsistent)
    * Civilization -(1-N)-> Settlement

According to the DataNucleus Documentation, persistence-by-
reachability semantics should persist everything by cascading on a
persist of a Civilization. I have a JUnit test to check the basic
storage and retrieval of these objects, but its behavior is
inconsistent. With no changes to the code, repeated runs of the test
give nondeterministic results. Specifically, the armies only persist
about 50% of the time. They are the only test that fails.

I could more easily understand a scenario where Armies never persist,
but the irregular behavior has me at a loss. Everything else persists
correctly and consistently. I've tried wrapping the factory method in
a transaction and I've tried bidirectional relationships, and neither
have changed the 50/50 pass/fail split in JUnit.

I am using Annotation-based configuration for DataNucleus, as
described in the App Engine documentation (link not included because
of anti-spam measures).

My code is posted in our stackoverflow version of this same question:

http://stackoverflow.com/questions/4847023/inconsistent-cascading-persistence-by-reachability-behavior-with-jdo-app-engine

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to