Hi Chuck,

How do I this? I think change my method for create my EntitySub but it 
interests me to know this solution. Mostly : "discarding all cached knowledge 
of EO". 

> If that is what you need, then look at the Role design pattern instead
> Where I can find it?

Rémy

> Le 24 nov. 2017 à 19:05, Chuck Hill <ch...@gevityinc.com> a écrit :
> 
> 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=gevityinc....@lists.apple.com> on behalf of 
> remy <r...@algodata.fr>
> Date: Friday, November 24, 2017 at 2:30 AM
> To: "webobjects-dev@lists.apple.com" <webobjects-dev@lists.apple.com>
> 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 
> <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      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to