Easy to use.
Stick @Auditable on a field that should be auditable. If the field is annotated with @ManyToOne etc. the cascade type will be read from the annotation (and obeyed) @CollectionOfElements and embedddable objects are cascaded to by default. Override with cascade attribute on @Auditable. Lists are compared.
As long as you control your entities through an AuditHome (a drop in replacement for EntityHome) logs will be created. Two objects are used for logging - the top-level AuditLog (which records Date, User etc. - set these by overriding the methods on AuditHome (create your own extension of AuditHome for your app to set defaukts for these)) and a recusive tree of AuditLogDetail. Each level maps an object, a new level is created for a 'child' object.