So you'd need to consume GraphDiff, you need to implement a custom GraphChangeHandler, and then do "diff.apply(myChangeHandler)" to aggregate / filter the changes you care about. All the references to "nodeId" in GraphChangeHandler can be cast to ObjectId, so you can tie it back to the actual objects. So while it is not user-friendly, I think you can turn it to useful info in a fairly straightforward manner.
Andrus > On Oct 11, 2019, at 10:24 AM, John Huss <johnth...@gmail.com> wrote: > > I haven't worked with the GraphDiff API much, but it's not super easy to > turn a GraphDiff into something immediately useful. > > When I've needed things like this I've usually constructed a > List<Map<String, Object>> with a row for each changed object and a map with > attribute/relationship key to the new value. Looking at > NodePropertyChangeOperation - it has the key and the old and new value, but > the API doesn't have any way of extracting that information that I see. > > Most likely I just don't understand how to use this correctly, but I'm > guessing I wouldn't be the only one. > > On Fri, Oct 11, 2019 at 5:36 AM Andrus Adamchik <and...@objectstyle.org> > wrote: > >> Was just answering Cayenne change tracking question on StackOverlow [1], >> and realized that the only user-friendly API that allows to check for >> individual changes is "cayenne-commitlog" that only works during commit. >> All the pre-commit APIs are internal and require lots of hoop jumping. I >> think we can address that on the cheap in 4.2 by defining a method like >> this in GraphManager.java: >> >> GraphDiff getChanges(); >> >> We already have such method implemented in ObjectStore, so there's really >> no effort and an immediate benefit. Or take it a step further and >> additionally implement filtering changes per object: >> >> GraphDiff getChanges(Persistent) >> >> Thoughts? >> >> Andrus >> >> [1] >> https://stackoverflow.com/questions/58318730/what-is-the-current-best-method-of-getting-the-changes-to-an-object-hierarchy-in