I was curious about what you could accomplish with EventManager listeners. I have a scenario where I normally use the Cayenne lifecycle callbacks to detect when an Object was updated, and “sync” it to an external system.
class SalesOrder { void sync() { // send data to external system } @PostUpdate void didUpdate() { this.sync(); } } But I now want to sync a SalesOrder if it changes or if any of its SalesOrderLines (many relationship) change. But If both objects SalesOrder/SalesOrderLine are part of the same commit, then I don’t want the sync to get invoked more than once. If I just used the logic below, its possible that the SalesOrder would get synced multiple times for all of its child SalesOrderLines, and possibly again if the SalesOrder itself changes class SalesOrderLine { @PostUpdate void didUpdate() { this.getSalesOrder().sync(); } } Was hoping to find something that I can execute after the commit of all objects is done, but call sync on the SalesOrder once. Can the EventManager help with this? post-commit listeners? Thanks, Matt Watson