Re: setting default order of entity fetches
Re: setting default order of entity fetches
- Subject: Re: setting default order of entity fetches
- From: Lachlan Deck <email@hidden>
- Date: Thu, 23 Aug 2007 22:41:39 +1000
On 23/08/2007, at 1:38 PM, Chuck Hill wrote:
On Aug 22, 2007, at 6:22 PM, Lachlan Deck wrote:
On 23/08/2007, at 10:46 AM, Chuck Hill wrote:
On Aug 22, 2007, at 5:09 PM, Lachlan Deck wrote:
Hi there,
EOEntity has a restrictingQualifier that's applied to every
fetch for the relevant entity.
Is there any similar mechanism for installing a default ordering
for fetched objects of each entity (e.g., when following a
toMany relationship)? Or any delegate methods somewhere?
No. And don't override the EOF methods to do this or you risk
messing with EOF. And we all know how that ends up. :-) The
reason for the lack of sorting, as I understand it, is that EOF
would then need to keep the list sorted each time something was
added to it.
It's already keeping them sorted (think about it...). Just not how
I'd like.
No, they are not sorted.
Furthermore, it's impossible to fetch records from a database
without them sorted in some kind of order.
Where on earth did you get that idea from? An unordered list is
not sorted. If there is no ORDER BY clause on a SELECT, the order
in the result set is undefined. It most databases it will change
over time as the query optimizer changes strategies.
I understand the theory - but I'm talking about reality ;-)
The point is that once the array has been faulted into memory they
have a fixed order whenever that particular relationship is accessed.
I would simply like to control the order that these objects are kept
in memory so that for the majority of cases no further ordering is
necessary.
I'm simply wanting to override the arbitrary sort order that the
database wants to return to suit this particular application.
And what if you wanted alternate sorts?
Simply apply the default sorting in the absence of a specific sort
orderings array. Not hard conceptually.
Not sure how that differs from what I suggested and it means two
sorts so additional unneeded load on the machine.
Huh. Where's the second sort? i.e., if you happen to have built a
custom EOFetchSpecification somewhere in your application that
happens to include a non-empty sort orderings array then that would
run as normal. Otherwise, the default one applies whilst faulting
from the database (not in memory).
The standard approach is to have a cover method that sorts the
contents of the relationship and returns it.
Which kinda makes *every* toMany relationship generated from each
EOEntity useless don't you think?
I dunno, I have always found them to be be pretty useful. YMMV.
Like Ken said, ordering is a UI thing.
Personally, I can't see the benefit of continually sorting a keyPath
in memory via some ui option every time you access that array rather
than once from the fetch where possible...
with regards,
--
Lachlan Deck
_______________________________________________
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