5

I have just started using Hibernate Envers for audit, and i will like to know if there is a way to get all the revisions of a class between two dates.

up until now i was using:

AuditQuery query = reader.createQuery().forRevisionsOfEntity(MYCLASS.class, false, true);
query.add(AuditEntity.revisionNumber().le(reader.getRevisionNumberForDate(MYDATE)));

to get the revisions of a particular date, but is there a way to recover all the revisions between for example: MYDATE1 and MYDATE2?

PearlJam
  • 51
  • 1
  • 2

2 Answers2

5

You can use between method of AuditProperty to Apply a "between" constraint.

http://docs.jboss.org/envers/api-new/org/hibernate/envers/query/criteria/AuditProperty.html

Amogh
  • 4,453
  • 11
  • 45
  • 106
4

If you have a timestamp property on your @RevisionEntity you can use a query like this:

    List<Object[]> revisions = (List<Object[]>) getAuditReader().createQuery()
                .forRevisionsOfEntity(MYCLASS.class, false, true)
                .add(AuditEntity.revisionProperty("timestamp").gt(startDate))
                .add(AuditEntity.revisionProperty("timestamp").lt(endDate))
                .getResultList();
charlb
  • 1,076
  • 9
  • 18