On Feb 5, 2009, at 12:02 PM, Don Lindsay wrote:

Hello Lachlan;

I just tried setPrefetchingRelationshipKeyPaths to use this and I still get a null for the person object. If I use the getter from the User Java Object person() after using the setPrefetchingRelationshipKeyPaths I get a StackOverflow Exception.

com.webobjects.foundation.NSForwardException [java.lang.StackOverflowError] null:java.lang.StackOverflowError at com .webobjects .foundation .NSForwardException ._runtimeExceptionForThrowable(NSForwardException.java:39) at com.webobjects.foundation.NSKeyValueCoding $_MethodBinding.setValueInObject(NSKeyValueCoding.java:1156) at com.webobjects.foundation.NSKeyValueCoding $_NumberMethodBinding.setValueInObject(NSKeyValueCoding.java:1183) at com .webobjects .eocontrol.EOCustomObject.takeStoredValueForKey(EOCustomObject.java: 1663) at com .psgs .prjmgtflx.entities.supertype._Users.setGetsspremail(_Users.java:150)
        at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source)
at sun .reflect .DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
at com.webobjects.foundation.NSKeyValueCoding$ValueAccessor $1.setMethodValue(NSKeyValueCoding.java:643) at com.webobjects.foundation.NSKeyValueCoding $_MethodBinding.setValueInObject(NSKeyValueCoding.java:1150)

which continues for thousands of lines. Could this possibly be caused because the Person Entity has a relationship back to the User Entity as well as the User Entity having a relationship to the Person entity?

Is this inheritance?  If so, yes.


If I do not use setPrefetchingRelationshipKeyPaths, and then call the person() getter from the User object, I get the Person object with no problems.

Ist very strange, no?

Otherwise, I would suspect some circular definition in your EO code.

Chuck



On Feb 5, 2009, at 12:04 PM, Lachlan Deck wrote:

On 06/02/2009, at 3:03 AM, Don Lindsay wrote:

When I use objectsWithFetchSpecification to retrieve an Array of User objects. (I setEntity("Users") and setIsDeep(true)).

@see EOFetchSpecification#setIsDeep.
This is not doing what you're looking for. i.e., you're not using inheritance from your description - but a relationship.

The Relationships in the Users object are not fetched. I believe this is due to faulting by EO.

Lazy faulting is default behaviour, correct.

I would like to retrieve the top level relationships in the object without the EO having to make a round trip to the database, at a later time. Is there a way to pull the top level relationships in an Entity, or specify if I want to go deeper into the relationship model?

to use the example of users.

User Entity:
Username attribute: String
Password attribute: String
Person attribute: Person EO Object

What I want to do is fetch all users and ensure that the Person object is fetched when I receive the Array of EOs back from objectsWithFetchSpecification.

fetchSpec.setPrefetchingRelationshipKeyPaths(new NSArray<String>("person"));

with regards,
--

Lachlan Deck


_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net

This email sent to [email protected]


--
Chuck Hill             Senior Consultant / VP Development

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 protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to