I want to distribute some entities from one dataDomain to another actually one database to identical other databases when a user insert,delete and update operations on these entities.To achieve this I create a superclass of object entities and I enforce the commit operation from this superclass to distribute the changes other contexts.Also I want to set this objects with relations and same primary keys on databases. ---------- For insert : runs correctly without setting relations DataContext ctx = controllerContexts.get(domainName); DataObject dataObj = ctx.createAndRegisterNewObject(obj.getClass()); ctx.localObject(dataObj.getObjectId(),obj); dataObj.setObjectId(obj.getObjectId()); ctx.commitChanges(); ---------- For delete: runs correctly DataContext ctx = controllerContexts.get(domainName); DataObject dataObj = DataObjectUtils.objectForPK(ctx,obj.getObjectId()); ctx.deleteObject(dataObj); ctx.commitChanges(); -------- For update:??? ClassDescriptor descriptor = localContext.getEntityResolver().getClassDescriptor(obj.getClass().getSimpleName()); System.err.println(new DeepMergeOperation(ctx).merge(obj, descriptor)); ctx.commitChanges(); --------
----- Orjinal Mesaj ----- Kimden: Andrus Adamchik Tarih: Wednesday, April 12, 2006 11:10 Konu: Re: Object migrates between DataDomains Kime: [email protected] > Can you explain what are you trying to achieve in general > (i.e. > scenario details)? I may be able to help then. > > Andrus > > On Apr 12, 2006, at 12:01 PM, [EMAIL PROTECTED] wrote: > > > Hi Andrus , > > > > I tested DeepMergeOperation. Merged object on > targetContext > > (anotherObject) is created as I desired with its relations > but I > > observe actually anotherObject is not created physically > on > > database .I used the targetContext.commitChanges() to create > on > > database but not create it.What is the reason of this or how > can > > commit created anotherObject on targetContext. > > > > > > ----- Orjinal Mesaj ----- > > Kimden: Andrus Adamchik > > Tarih: Tuesday, April 11, 2006 17:53 > > Konu: Re: Object migrates between DataDomains > > Kime: [email protected] > > > >> Yeah, default mechanism is "lazy" in that it assumes that > >> related > >> objects can be resolved from the database on demand. Copying > >> a > >> subgraph of new objects is a bit more tricky. In 1.2 you can > >> try > >> using org.objectstyle.cayenne.util.DeepMergeOperation for > >> your > >> purpose. Something like this: > >> > >> DataContext srcContext, targetContext; > >> DataObject object; > >> > >> ClassDescriptor descriptor = > >> > >> targetContext.getEntityResolver().getClassDescriptor("MyEntity"); > >> DataObject anotherObject = new > >> DeepMergeOperation(targetContext).merge > >> (object, descriptor); > >> > >> DeepMergeOperation merges everything that is attached to a > >> given > >> object and is already resolved in memory. If you need to > >> implement > >> different logic, you can write your own version using > >> DeepMergeOperation as a template. An example of a different > >> graph > >> traversal termination logic is ObjectDetachOperation that is > >> based on > >> a preset tree of relationships. > >> > >> Andrus > >> > >> On Apr 11, 2006, at 5:50 PM, [EMAIL PROTECTED] wrote: > >> > >>> Hi, > >>> > >>> Thank you for help. I make the changes as you say but I > >> observe the > >>> DataContext.localObject(..) not set the relations (forign > >> key > >>> id's).Can you help me for migrating > >>> objects with its relations through DataDomains. > >>> > >>> ----- Orjinal Mesaj ----- > >>> Kimden: Andrus Adamchik <[EMAIL PROTECTED]> > >>> Tarih: Monday, April 10, 2006 11:55 > >>> Konu: Re: Object migrates between DataDomains > >>> Kime: [email protected] > >>> > >>>> > >>>> On Apr 10, 2006, at 11:48 AM, [EMAIL PROTECTED] wrote: > >>>> > >>>>> Hi, > >>>>> > >>>>> Is there a easy way to migrate created objects from one > >>>> DataDomain > >>>>> to other DataDomain. > >>>>> > >>>>> Thank you... > >>>> > >>>> > >>>> Technically DataObject belongs to a DataContext, so we > should be > >>>> speaking about moving objects between DataContexts (that in turn > >>>> can > >>>> belong to different DataDomains). This is done with > >>>> DataContext.localObject(..) > >>>> > >>>> http://objectstyle.org/confluence/display/CAYDOC/Moving+Objects > >>>> +Between+Contexts > >>>> > >>>> Of course object mappings have to be compatible in both domains > >>>> involved. > >>>> > >>>> Andrus > >>>> > >>>> > >>> > >> > >> > > >
