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