Re: Empty relationship that isn't null
Re: Empty relationship that isn't null
- Subject: Re: Empty relationship that isn't null
- From: Chuck Hill <email@hidden>
- Date: Tue, 24 May 2005 13:17:37 -0700
On May 22, 2005, at 9:31 AM, DevReseune wrote:
Hi,
Thanks for your response, but my problem is still there.
I resume with more details:
#1
I have 2 entities:
- PARENT:
- PK: String ID
- to-one relationship: CHILD child with:
- PARENT.ID = CHILD.PARENTID
That sounds like a to-many relationship. The database makes no
guarantee that child.parentid is unique. Check how you have modelled
this. Usually you want the child's PK as an FK in the Parent to
enforce to-one.
- optionnal
- delete rule: nullify
- owns destination: no
- propagate primary key: no
- CHILD
- PK: String PARENTID
NOTE: PARENT is related with another entity, and the primary key of
PARENT is the primary key of this other entity.
That can be a problem if this other entity is missing from the DB. EOF
will assume that it exists and create an empty place holder for it.
#2
In database, I have only 2 PARENTs, and 0 CHILD.
#3
First, I fetch all PARENTs:
- EOF calls a SQL request to load all PARENT
- the attribute PARENT.child is initiated with a
EOAccessDeferredFaultHandler object
It seems odd that you can see this. EOF should have fired it. It is
very unusual to actually 'see' a fault.
> update with takeStoredValueForKey
#4
So, in another page, I show an PARENT:
- EOF calls a SQL request to load a related CHILD with PARENT
> the response is "0 row(s) proceed". It's true, no CHILD exists in
database
- he attribute PARENT.child is setted with a _EOVectorKeyGlobalID
object with all its properties are
> update with takeStoredValueForKey
What are the contents of the that globalD? What do you mean "the
attribute PARENT.child is setted with a _EOVectorKeyGlobalID". A
global ID is associated with an EO, but it can't be set in place of
one. And what do you mean by "with all its properties are update with
takeStoredValueForKey"?
I really think that something in your model is not really as you think
it is (hint, look again, carefully) or that you have done something
very stange in the model.
Chuck
Any suggestion?
Frédéric
Le 18 mai 05 à 22:23, Ken Anderson a écrit :
To expand a little bit on what Chuck is saying, if a value exists in
a column being used to construct a relationship, EOF believes that
the related object exists. If you use the same primary key for
related EO's (for instance, a primary EO, and an optional 'sidecar'
object), you can run into this problem, since the primary key of the
primary EO always exists, it is expected that the related object
always exists.
This occurs often in databases that were designed without EOF in
mind. A typical way to work around this is to make the relationship
to-many, then have a custom accessor in the EO of the single variety
that either returns toMany.firstObject() or nil, depending on whether
there's a count on the relationship or not.
Ken
On May 18, 2005, at 4:12 PM, Chuck Hill wrote:
We are talking about a specific object that is related to a specific
row in the database. Does that row have a non-null value for the
EntityB FK? If so, is it valid or do you have a referential
integrity problem in your data? If you have a referential integrity
problem (which is what it sounds like), then you are seeing what is
called a "Dummy Fault EO" see
http://lists.apple.com/archives/webobjects-dev/2003/Aug/
msg00433.html and other Google hits.
Chuck
On May 18, 2005, at 12:46 PM, DevReseune wrote:
Hi,
It's an optional to-one relationship, there is none EntityB in
database, and the entityB FK is null by default, but this property
is hidden (not the related object, but its ID).
I don't understand.
Frédéric
Le 16 mai 05 à 21:24, Chuck Hill a écrit :
This is a to-one relationship? Is it marked as optional or
mandatory? Is the entityB FK in the EntityA object null, or does
it have a value?
Chuck
On May 16, 2005, at 11:19 AM, DevReseune wrote:
Hi,
I have 2 entities bound with a relationship:
- EntityA
- entityB -> EntityB
- EntityB
When I fetch an EntityA, the relationship entityB is initialited
with an EOAccessDeferredFaultHandler (takeStoredValueForKey)
while the SQL select statement returns 0 row.
When I try to access to the relationship entityB, it is updated
with an _EOVectorKeyGlobalID (takeStoredValueForKey).
But, I expected a null value. What's the problem?
Webobjects 5.2.4
MacOS X Tiger (I have the same behavior on X.3).
Frédéric _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
email@hidden
This email sent to email@hidden
--
Practical WebObjects - a book for intermediate WebObjects
developers who want to increase their overall knowledge of
WebObjects, or those who are trying to solve specific application
development problems.
http://www.global-village.net/products/practical_webobjects
--
Practical WebObjects - a book for intermediate WebObjects developers
who want to increase their overall knowledge of WebObjects, or those
who are trying to solve specific application development 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:
email@hidden
This email sent to email@hidden
--
Practical WebObjects - a book for intermediate WebObjects developers
who want to increase their overall knowledge of WebObjects, or those
who are trying to solve specific application development 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:
This email sent to email@hidden