If you want to do it all the time, you can supply your own ERXEC factory to do
it. Something like the following in your application
public class Factory extends ERXEC.DefaultFactory {
@Override
public EOEditingContext _createEditingContext(EOObjectStore parent) {
EOEditingContext ec = super._createEditingContext(objectStore);
ec.setRetainsRegisteredObjects(true);
return ec;
}
}
Then just call
ERXEC.setFactory(new Factory());
somewhere during startup.
Ramsey
On Dec 11, 2012, at 4:37 PM, Johnny Miller wrote:
> Hi Maik and Ramsey,
>
> Understood. This app has a few users who are writing all the time so i'm not
> worried about memory as much as I'm worried about it:
>
> A. Working
> B. Users see each other's writes.
>
> So I'm going to play it safe and just set setRetainRegistedObjects(true) in
> most cases.
>
> Thanks again this really had me worried.
>
> Johnny
>
> On Dec 11, 2012, at 1:29 PM, Ramsey Gurley <[email protected]> wrote:
>
>> I think you have to set it on the parent and you have to do it while the
>> context is fresh. If you fetch EOs into a context and then set it, I
>> believe it will throw an exception. That's my recollection of it anyway :-)
>>
>> Ramsey
>>
>> On Dec 11, 2012, at 4:25 PM, Maik Musall wrote:
>>
>>> Hi Johnny,
>>>
>>> I'm not entirely sure, but I think you need to
>>> setRetainRegisteredObjects(true) on the parent immediately after the
>>> parent's creation if you ever plan to create child editing contexts on it.
>>> That's what I do, although it costs memory if you can't always decide that
>>> at parent's creation time. In that respect, my previous comment was too
>>> unprecise, sorry.
>>>
>>> But let's see what Ramsey says.
>>>
>>> Maik
>>>
>>>
>>> Am 12.12.2012 um 00:17 schrieb Johnny Miller <[email protected]>:
>>>
>>>> Hi Maik,
>>>>
>>>> Does this look right to you?
>>>>
>>>> public EOEditingContext ec() {
>>>>
>>>> if(null == _ec) {
>>>> _ec = ERXEC.newEditingContext();
>>>> }
>>>>
>>>> return _ec;
>>>>
>>>> }
>>>>
>>>> public EOEditingContext childEc() {
>>>> ec().setRetainsRegisteredObjects(true);
>>>> return ERXEC.newEditingContext(ec(), false);
>>>> }
>>>>
>>>> public createObject() {
>>>> EOEditingContext childEc = childEc();
>>>> // create the object
>>>> }
>>>>
>>>> I'm just wondering if it's OK that _ec could be around for a while before
>>>> I setRetainsRegisteredObjects to true on it.
>>>>
>>>> Thanks a lot!
>>>>
>>>> On Dec 11, 2012, at 1:02 PM, Maik Musall <[email protected]> wrote:
>>>>
>>>>> Do it immediately after creating the child editing context.
>>>>>
>>>>> Am 11.12.2012 um 21:57 schrieb Johnny Miller <[email protected]>:
>>>>>
>>>>>> Thank you kind Sir. I thought i was going crazy.
>>>>>>
>>>>>> When do you use setRetainsRegisteredObjects? When the EO is initialized?
>>>>>>
>>>>>> Thanks a million!
>>>>>>
>>>>>> On Dec 11, 2012, at 10:41 AM, Ramsey Gurley <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>> This is a known issue when using child editing contexts. The only
>>>>>>> current workaround I'm aware of is:
>>>>>>>
>>>>>>> parentEC.setRetainsRegisteredObjects(true);
>>>>>>>
>>>>>>> Ramsey
>>>>>>>
>>>>>>> On Dec 11, 2012, at 1:37 PM, Johnny Miller wrote:
>>>>>>>
>>>>>>>> Hello everyone,
>>>>>>>>
>>>>>>>> I'm having problem with a newly deployed app where these errors are
>>>>>>>> popping up intermittently all over the place.
>>>>>>>>
>>>>>>>> I was wondering if maybe I could get some advice on whether some
>>>>>>>> things I'm doing are possibly causing this...
>>>>>>>>
>>>>>>>> 1. I'm only using ERXEC
>>>>>>>> 2. I'm not explicitly using lock or unlock anywhere.
>>>>>>>> 3. I'm creating new EOs with a child EditingContext - I'm going to go
>>>>>>>> to peer editing context in new build but in some cases I just can't do
>>>>>>>> this i.e. the EO is created using a wizard and I don't want to insert
>>>>>>>> the EO unless the user completes the wizard.
>>>>>>>> 4. I'm using EOEditingContext.setDefaultFetchTimestampLag(0) in the
>>>>>>>> application constructor.
>>>>>>>>
>>>>>>>> This app has a fair amount of data and a few users who are crunching
>>>>>>>> away on it, constantly adding and updating records. I set item 4 to 0
>>>>>>>> because I was worried about users viewing data that is out of sync.
>>>>>>>>
>>>>>>>> Could #4 be tripping the error?
>>>>>>>>
>>>>>>>> Aloha,
>>>>>>>> Mr. Johnny Miller
>>>>>>>> Web Development Manager
>>>>>>>> Kahalawai Media Company
>>>>>>>> Lahaina, HI 96761
>>>>>>>> tel: (808) 661-7962 | mobile: (808) 283-0791
>>>>>>>> website | e-mail
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>>> Webobjects-dev mailing list ([email protected])
>>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>>> https://lists.apple.com/mailman/options/webobjects-dev/rgurley%40smarthealth.com
>>>>>>>>
>>>>>>>> This email sent to [email protected]
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>> Webobjects-dev mailing list ([email protected])
>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>> https://lists.apple.com/mailman/options/webobjects-dev/maik%40selbstdenker.ag
>>>>>>
>>>>>> This email sent to [email protected]
>>>>>
>>>>
>>>
>>> _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list ([email protected])
>>> Help/Unsubscribe/Update your Subscription:
>>> https://lists.apple.com/mailman/options/webobjects-dev/rgurley%40smarthealth.com
>>>
>>> This email sent to [email protected]
>>
>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com
This email sent to [email protected]