RevisionEntity
majerholdt Dec 23, 2015 7:18 AM'm using Hibernate-Core:4.3.11.Final and Hibernate-Envers:4.3.11.Final and I have my implementation of org.hibernate.envers.RevisionListener
and I have my revision entity(MyRevisionEntity) which extend org.hibernate.envers.DefaultRevisionEntity but envers still using default org.hibernate.envers.DefaultRevisionEntity.
public class MyRevisionListener implements RevisionListener { @Override public void newRevision(Object o) { MyRevisionEntity myRev = (MyRevisionEntity) o; .. } }
@Entity @Table(name = "my_revision") @RevisionEntity(MyRevisionListener.class) public class MyRevisionEntity extends DefaultRevisionEntity { }
What I'm doing wrong?
Then on documentation I find:
If your RevisionListener class is inaccessible from @RevisionEntity (e.g. exists in a different module), set org.hibernate.envers.revision_listener property to it's fully qualified name. Class name defined by the configuration parameter overrides revision entity's value attribute.
so I add:
org.hibernate.envers.revision_listener: db.MyRevisionListener
but then I get error:
ERROR [2015-12-23 12:16:27,157] org.hibernate.AssertionFailure: HHH000099: an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session): ! java.lang.ClassCastException: org.hibernate.envers.DefaultRevisionEntity cannot be cast to db.MyRevisionEntity ! at arnes.dropwizard.db.ArisRevisionListener.newRevision(ArisRevisionListener.java:21) ~[classes/:na] ! at org.hibernate.envers.internal.revisioninfo.DefaultRevisionInfoGenerator.generate(DefaultRevisionInfoGenerator.java:107) ~[hibernate-envers-4.3.11.Final.jar:4.3.11.Final] ! at org.hibernate.envers.internal.synchronization.AuditProcess.getCurrentRevisionData(AuditProcess.java:127) ~[hibernate-envers-4.3.11.Final.jar:4.3.11.Final] ! at org.hibernate.envers.internal.synchronization.AuditProcess.executeInSession(AuditProcess.java:109) ~[hibernate-envers-4.3.11.Final.jar:4.3.11.Final] ! at org.hibernate.envers.internal.synchronization.AuditProcess.doBeforeTransactionCompletion(AuditProcess.java:161) ~[hibernate-envers-4.3.11.Final.jar:4.3.11.Final] ! at org.hibernate.envers.internal.synchronization.AuditProcessManager$1.doBeforeTransactionCompletion(AuditProcessManager.java:63) ~[hibernate-envers-4.3.11.Final.jar:4.3.11.Final] ! at org.hibernate.engine.spi.ActionQueue$BeforeTransactionCompletionProcessQueue.beforeTransactionCompletion(ActionQueue.java:722) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
It is very strange because MyRevisionEntity extend DefaultRevisionEntity .
Any idea?
Regards, Tomaz