Chris Cranford, I fully agree and support your desire for consistency. Perhaps, a slightly more real-life than abstract "base" and "derived" entities could be helpful in determining what should be the expected behaviour. Consider an @Entity Car with @Audited property – owner – and not audited ones – numberOfSeats, color. Since owner and plates are very important pieces of information, we need to track every change of them, for every Car. Now, assume we have inheritance here. Car is abstract and has two subclasses. @Entity RegularCar extends Car which adds plates property (that's important, so we @Audit it). And also @Entity SportCar extends Car which adds bunch of other properties: isFormula1Allowed, numberOfWonRaces, timeRequiredToReplaceAllWheelsInNanos. We don't need to audit those properties, hence we don't want any audit-related annotations on a sport car. Now, every Car has its owner and this property is marked as audited. RegularCar has also plates property marked as audited. So my expectation is that every change to RegularCar.plates gets recorded as well as every change to Car.owner, regardless which of the two subclasses this happens to be. |