Hi Bryan,
Thanks, that's what i thought.
I'll check for the Jira issue.
Jonathan.
Bryan Lewis wrote:
I see what you're saying now. You're right, the call to localObject()
doesn't copy the changes map for the object. Merely setting the
persistenceState to MODIFIED won't cause a database commit, nor will a
phantom change like setting an attribute to its current value. Cayenne
will efficiently see that there are no real changes and will generate no
SQL. I'd say the docs are a little misleading here... "you are
responsible for setting correct persistence state" suggests that
setPersistenceState() is a solution.
I see a comment in http://issues.apache.org/cayenne/browse/CAY-380:
"Current implementation still doesn't do a good job in merging data
into dirty objects, but it is a start. Will see how it pans out."
And there's this line in the source code:
// TODO: Andrus, 1/24/2006 implement smart merge for modified objects...
You could try entering a new issue in JIRA.
Jonathan Bélisle wrote:
I printed the list of updated objects and my object is there with the
persistance state to MODIFIED.
And I am committing the right dataContext : dataContext2
Event then, committing one or the other data context should write the
changes to the database.