Re: Object not being saved after refaulting and applying changed
Re: Object not being saved after refaulting and applying changed
- Subject: Re: Object not being saved after refaulting and applying changed
- From: Miguel Arroz <email@hidden>
- Date: Fri, 20 Jul 2007 21:43:08 +0100
Hi!
It's more complicated than that. I need to look at some values of
objects, and change them accordingly to the previous values *and*
values from other objects. I can't simply merge stuff, I need to: a)
Get objects from DB, b) do weird calculations, c) write results in an
atomic way. When the "atomic" part of it brakes, ie, when an OL
exception is thrown, I need to go back to step a), and the results on
c) will be different that what they were in the first iteration.
Anyway, it's solved! But could someone fix that bug in 5.4? (Maybe
it is, I still didn't read the release notes!)
Yours
Miguel Arroz
On 2007/07/20, at 21:16, Galen Rhodes wrote:
Years and years and years ago I could have sworn someone posted a
method that replaced EOEditingContext.saveChanges() that would
apply (merge) recent database changes to changed EOs if they failed
optimistic locking?
I think this was around 2001 or so.
I think it was basically what Miguel is looking for in one easy to
use method.
--
Galen Rhodes
email@hidden
"There is no worse tyranny than to force a man to pay for what he
does not want merely because you think it would be good for him."
-- Robert Heinlein --
On Jul 19, 2007, at 7:19 PM, Chuck Hill wrote:
On Jul 19, 2007, at 4:17 PM, Miguel Arroz wrote:
Hi!
Pardon my ignorance, but is there a way to apply this globally?
IE, change the behaviour of all the ECs to this?
You could add it to a sub-class of EC. I have _no_ idea what this
would do to EOF internals, but I would not be at all optimistic
for success.
I will actually used an optimized version of this to (try to)
solve my problem, because I can reduce the number of fetches, but
it would be nice to know that this would work fine everywhere.
This is just an extract from how I handle optimistic locking
problems.
Chuck
PS: Pierre, it would be *really* great to have that bug fixed! ;)
4. Try this instead of refault:
/**
* Forces this object to be re-read from the database; the
snapshot and all editing contexts
* holding this object are updated. Merging or overwriting
of the changes is then handled by
* the editing context delegate. This method takes no action
if the object is pending insertion.
*
* @param anObject the object to be evaluated
*/
public static void refreshObject(EOEnterpriseObject anObject)
{
/** require [valid_theObject_param] anObject != null;
[in_ec] anObject.editingContext() !=
null; **/
// We can't just call editingContext().refreshObject()
or editingContext().refaultObject() the object here.
// That will result in fresh data only if the object is
in a single editing context.
// This seems like the safest way to get fresh data and
inform all of the other
// editing contexts that they need to update.
EOEditingContext ec = anObject.editingContext();
if ( ! ec.insertedObjects().containsObject(anObject))
{
EOQualifier thisObject =
EOUtilities.qualifierForEnterpriseObject(ec, anObject);
EOFetchSpecification fetchSpec = new
EOFetchSpecification(entityForSelf(anObject).name(), thisObject,
NSArray.EmptyArray);
fetchSpec.setRefreshesRefetchedObjects(true);
anObject.editingContext
().objectsWithFetchSpecification(fetchSpec);
}
}
--
Practical WebObjects - for developers who want to increase their
overall knowledge of WebObjects or who are trying to solve
specific problems.
http://www.global-village.net/products/practical_webobjects
Miguel Arroz
http://www.terminalapp.net
http://www.ipragma.com
--
Practical WebObjects - for developers who want to increase their
overall knowledge of WebObjects or who are trying to solve
specific problems.
http://www.global-village.net/products/practical_webobjects
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
40bunburyjamestown.org
This email sent to email@hidden
Miguel Arroz
http://www.terminalapp.net
http://www.ipragma.com
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden