This appears to be a problem during metadata collection, specifically below:
private void addPropertiesFromClass(XClass clazz) {
/* other stuff eliminated for breavity */
if( allClassAudited != null || !auditedPropertiesHolder.isEmpty() ) {
final XClass superclazz = clazz.getSuperclass();
if( !clazz.isInterface() && !"java.lang.Object".equals(superclazz.getName()) ) {
addPropertiesFromClass( superclazz );
}
}
}
Essentially for the Derived entity, the auditedPropertiesHolder is empty and allClassAudited is null, therefore the class hierarchy is not traversed in order to find the audited properties of the parent class. Had Derived had a single property annotated with @Audited, this would have worked. But even in this case, allClassAudited would still have remained null and the only trigger would have been that auditedPropertiesHolder wasn't empty, causing the class hierarchy to be traversed. I need to determine why we're not doing this traversal as default behavior. |