Re: NSDictionary and FetchSpecificationNamed usage
Re: NSDictionary and FetchSpecificationNamed usage
- Subject: Re: NSDictionary and FetchSpecificationNamed usage
- From: Arturo Perez <email@hidden>
- Date: Wed, 19 Oct 2005 14:27:36 -0400
Dev WO wrote:
Hi Arturo,
thanks, at least it compiles.
But I get a null pointer exception...
I though comparing the primary key would be "faster" or more efficient
as it doesn't have to compare the entire object and just request for
the PK.
I should send the entire object as a qualifier for the fetch?
Well, EOF is clever that way. If you make a fetchspec that takes an EO
as its parameter, EOF automatically figures out what the primary key is
and uses that. That means that you, the developer, doesn't need to know
or care how to do that.
that would be:
((quantityAvailable <> quantity) and (product = $product))
in the eomodel and
NSDictionary theProduct = new NSDictionary("product", product);
in the code?
Correct.
Maybe I'm viewing it in the wrong way.
Here's what I'd like to do in fact:
-I've got a table "order" with the order references (date, person name,
etc)
-I've got another table "item" with the items and it is joined to "order".
What I need to do is when I add more quantity to a product, I'd like to
check all the "items" that belongs to this product (I've got a
relationship between "the product" and "item"),
and for each item, I'd like to check a couple parameter inside
themselves and in their related "order" before doing anything with my
provisioning product.
If I were you, I wouldn't directly get the items like that. I'd get the
order and get the items from the order. It will be more efficient at
the cost of potential stale data. The stale data is easily handled in
this specific instance.
Validation is your friend here as well. If you make a method in your EO
called validateItem() with your checks in it then EOF will automatically
call it and won't let you save if you make a programming error (unless
the error is in validateItem :).
You have to learn to think in the object graph, not the SQL tables.
I though I could get directly the array of "item", but maybe I should
do it in several steps.
Assuming you have an order, and a properly defined EOModel, your several
steps are
/* @TypeInfo OrderItem */
NSMutableArray items = order.items();
Done, update your item counts and saveChanges.
What's your opinion?
thanks Arturo
Xavier
Dev WO wrote:
-----
public void provisioningOrder(Product product,
ProductProvisioning provisioning) {
CustomerOrderItem aCustomerOrderItem;
NSMutableDictionary theProduct = new NSMutableDictionary();
theProduct = ((NSArray)product.valueForKey("productPK"));
EOFetchSpecification fetchSpec =
EOFetchSpecification.fetchSpecificationNamed
("FetchSpecItemSortedByOrderDateForAProductAndRefresh",
"CustomerOrderItem");
EOFetchSpecification boundFs =
fetchSpec.fetchSpecificationWithQualifierBindings(theProduct);
-----
I just need to fetch the CustomerOrderItem for the specific object
product!
My namedFetchSpecification is handling the sorting and some extra
qualifier.
Could someone explain me in a human readable language;) what I'm
doing wrong? obviously I'm doing something wrong:)
Thanks
Xavier
Well, you shouldn't be using the primary key as one thing.
Another thing is that you're not putting anything into the array.
Try this
NSDictionary theProduct = new NSDictionary("productPK",
product);
Or even
NSMutableDictionary theProduct = new NSMutableDictionary();
theProduct.setObjectForKey(product, "paramName");
But really, get rid of the primary key from the object so that you
can pass the EO without extracting its primary key first.
_______________________________________________
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