Re: Polymorphic Relationship
Re: Polymorphic Relationship
- Subject: Re: Polymorphic Relationship
- From: Chuck Hill <email@hidden>
- Date: Fri, 24 Nov 2017 18:05:55 +0000
- Thread-topic: Polymorphic Relationship
Remy,
You *can* get an EO to change its class over time by changing the restricting
qualifier, discarding all cached knowledge of EO and doing a fetch. *But* that
is really, really not recommended. If that is what you need, then look at the
Role design pattern instead. That is probably closer to what you need.
If you just need to create instances of different classes based on a string
(EntitySub.ENTITY_NAME) then create a factory method that takes the string and
returns an instance of a sub-class of EntityAbstract. All of the information
needed to do this is in the model and can be referenced at runtime. It is
quite simple. The way you are doing it below is just wrong.
Chuck
From: Webobjects-dev
<webobjects-dev-bounces+chill=email@hidden> on behalf of remy
<email@hidden>
Date: Friday, November 24, 2017 at 2:30 AM
To: "email@hidden" <email@hidden>
Subject: Polymorphic Relationship
Hi,
I want make an polymorphic entity.
I have an Entity Abstract named "EntityAbstract" and a subclass Entity named
"EntitySub" where the qualifier is (refEntityName=‘EntitySub').
I have third Entity named "Relation" that has an relationship with "EntitySub".
I have a problem when :
EOEditingContext editingContext = ERXEC.newEditingContext();
int relationID = Integer.valueOf(relation().primaryKeyInTransaction());
EntityAbstract entityAbstract =
ERXEOControlUtilities.createAndInsertObject(editingContext(),
EntityAbstract.class);
entityAbstract.setRefEntityName(EntitySub.ENTITY_NAME);
entityAbstract.setRefEntityID(relationID);
editingContext().saveChanges();
ERXEOControlUtilities.refreshObject(relation());
for (EntityAbstract e : relation().entitySubs())
System.err.println(e); // Print <your.app.model.EntityAbstract
How to print <Entity pk:"..."> and not <EntityAbstract pk:"..."> ?
I don't want use the class "Entity" for
ERXEOControlUtilities.createAndInsertObject
Do you have an idea?
I tested :
eo.invalidateAllObjects(); eo.parentObjectStore().invalidateAllObjects();
eo.rootObjectStore().invalidateAllObjects();
It does not work...
The project : https://github.com/algodata44/PolymorphicRelationship
Use DB H2
Thx
_______________________________________________
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