Inherited properties are not audited when only the leaf class is marked for auditing in EAP 6

Solution Verified - Updated -

Issue

Properties inherited from a MappedSuperclass are not audited (and are null in the revision data for an Audited subclass)

@MappedSuperclass
public abstract class BaseClass {
    @Id
    private long id;

    private String baseProperty;
    ...
    public String getBaseProperty() {
        return baseProperty;
    }

    public void setBaseProperty(String baseProperty) {
        this.baseProperty = baseProperty;
    }
    ...
}

@Entity
@Audited
public class LeafClass extends BaseClass {
    private String leafProperty;
    ...
    public String getLeafProperty() {
        return leafProperty;
    }

    public void setLeafProperty(String leafProperty) {
        this.leafProperty = leafProperty;
    }
    ...
}


public void test() {
    // create LeafClass instance
    ...
    transaction.begin();
    {
        LeafClass lc = entityManager.createQuery("from LeafClass l", LeafClass.class).getSingleResult();
        AuditReader reader = AuditReaderFactory.get(entityManager);

        List<Number> revs = reader.getRevisions(LeafClass.class, lc.getId());
        LeafClass lcRev1 = reader.find(LeafClass.class, lc.getId(), revs.get(0));
        assertEquals("Leaf property match", lc.getLeafProperty(), lcRev1.getLeafProperty());
        assertEquals("Base property match", lc.getBaseProperty(), lcRev1.getBaseProperty()); // fails lcRev1.baseProperty == null
    }
    transaction.commit();
}

Environment

  • Red Hat JBoss Enterprise Application Platform (EAP) 6
  • Hibernate/Envers 4

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.

Current Customers and Partners

Log in for full access

Log In
Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.