I was always reluctant to put this functionality into Envers as it's very use-case-dependent on what such reversal should do. For example, should it create an audit entry in itself? Which relations should be traversed?