Hey Andrus, Thanks for your reply that day.
Just wanted to let you know this Worked !! Thanks heaps for help ! -----Original Message----- From: Andrus Adamchik [mailto:and...@objectstyle.org] Sent: Wednesday, 28 March 2012 6:50 PM To: user@cayenne.apache.org Subject: Re: Track Column level changes in Cayenne (reposting from stackoverflow answer) There are a few ways to approach this. Here is the one that IMO is the most transparent. The trick is to use a different ObjectContext from the one committing changes. Then you will get a separate copy of the object that will contain currently saved value: // 'this' refers to the DataObject being committed (assuming things happen in its callback) ObjectContext parallelContext = ... // create a new context here like you normally would // 3.1 API; 3.0.x has a similar method with a slightly different sig MyClass clone = parallelContext.localObject(this); // if you are ok with cached old value, ignore the 'invalidateObjects' call. // If not, uncomment it to ensure the object gets refetched. // Also 3.1 API. Should be easy to adjust for 3.0 // parallelContext.invalidateObjects(clone); Object oldValue = clone.getXyz(); Andrus On Mar 28, 2012, at 7:58 AM, Simran Narula wrote: > Hi, > > I need to log each action taken on my portal UI for e.g. > > Price changed for product x > > Assume all the information is contained within one table i.e.both price & the > product information. > > When the portal is loaded with product information, user can change the price > of the product. > > I want to check if the price has changed or not and for that I am using a > pre-update call back in Cayenne entity to check these changes, I want to > check if the price x is changed to Y and push another history record in the > Database. So far I have tried cache strategies - NO_CACHE and other > workarounds but no success yet. > > surely I can achieve this by other hacky means, but do not want to. My > question is... is there any way to track column level changes in Cayenne ? > > Thanks. > Simran > >