Hello,

Envers is a very good solution for auditing changes in your database and the query Envers API is also very intuitive.

However, I have a case which doesn't work.
For information, I use the JBoss EAP server in version 6.3.3 (including hibernate-core and hibernate-envers modules in version 4.2.21.Final-redhat-1).

I would like to have a revision on the parent entity if I update only a property on a child.
On stackoverflow web site, this problem is mentioned:
    * http://stackoverflow.com/questions/27420161/envers-audits-parent-entity-when-inserting-a-sub-entity-but-not-when-updating
    * http://stackoverflow.com/questions/10121103/hibernate-envers-retrieving-the-right-revisions-of-an-entity-with-a-collection


I'm looking for a better solution than the given one (to add a persistent field containing the timestamp).
Now, is there an alternative solution ?


I tried to add a non persistent boolean property in my parent entity called "forceUpdate", false by default.
In the subclass, before update, I set the forceUpdate property value to true in the parent entity.

Next, via an hibernate interceptor, I wrote the following code:

@Override
public int[] findDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState,
        String[] propertyNames, Type[] types)
{
    int[] res = null;

    if (entity instanceof IAuditChange)
    {
        final IAuditChange iac = (IAuditChange)entity;
        if (iac.isForceUpdate())
        {
            res = new int[] { 1 };
        }
    }

    return res;
}

This mechanism triggers the update in the parent entity but there is no revision in the audit/envers table.
how to obtain a revision on parent entity if I update only a property on a child ?

Thank's a lot for your answer,
Fabien