Hi Hugi, You might have to compare everything to be certain. Here is something I've used in the past (for Cayenne 3.x) which might be helpful:
https://gist.github.com/mrg/4dce22b67175c27f4047#file-cayenneutils-java-L105 On Mon, Jul 13, 2020 at 9:11 AM Hugi Thordarson <h...@karlmenn.is> wrote: > Hi all. > Almost all of my objects have attributes called creationDate() and > modificationDate(), these are populated in a listener attached to the > DataDomain: > > https://gist.github.com/hugith/a40faae5529a1826d601515a9e8c5206 > > Relatively simple and has served me well for the past few years. One thing > has always irritated me though. This method of doing things means that if > the only change to an object is to a to-many relationship, > "modificationDate" will get updated (for example: User has a relationship > user<-->>invoices, the user creates an invoice which is then added to his > "invoices" relationship. modificationDate is then updated even if there was > no logical change to the user itself). > > So, I'm wondering… Is there any good way in the listener to check what > attributes have changed, so I can skip the update to modificationDate if > the only changed properties are to-many relationships? > I know I could implement a CommitLogListener and use the ChangeMap from > there, but as you see I'm doing these updates before committing, making > these changes a part of the same commit (which I'd much prefer to keep that > way). > > Cheers, > - hugi