Tracking property names of revisions

149 views Asked by At

I am currently attempting to implement a revision history screen in an MVC app. I need to be able to retrieve the names of fields which have changed in each revision using Envers. So I am following directions here: http://envers.bitbucket.org/#envers-tracking-modified-entities-revchanges

I am using the second option since we have a custom revision entity. It looks like this:

[RevisionEntity(typeof(MyRevisionListener))]
public class RevisionEntity : DefaultTrackingModifiedEntitiesRevisionEntity
{
    public virtual Person User { get; set; }
}

As you can see I am inheriting from DefaultTrackingModifiedEntitiesRevisionEntity in order to make sure the class has the property to hold the modified entities' names.

Per the documentation this should create a table called RevChanges in which this information is stored with reference to the revisions table:

Envers provides a simple mechanism that creates REVCHANGES table which stores entity names of modified persistent objects. Single record encapsulates the revision identifier (foreign key to REVINFO table) and a string value.

I am never seeing this table created. I tried creating such a table myself along with a related class and wiring up the mappings, but I don't see how Envers would know to put the data into that table without me configuring it somehow. I just get an exception saying that the object is different from the target type when the get method is called on the new type.

How can I get this to work?

1

There are 1 answers

0
Roger On

If you use a custom revision entity, you need to map this just like you do with normal entites.

http://envers.bitbucket.org/#revisionlog