I have to store table name in my auditing table and for that I am using hibernate envers. I am trying to implement the example in my sample application given in hibernate envers documentation. you can refer this link for code https://docs.jboss.org/hibernate/core/4.2/devguide/en-US/html/ch15.html#envers-tracking-modified-entities-revchanges but this code is not working and giving me error
java.lang.IllegalArgumentException: Can not set int field hibernate.ModifiedEntityTypeEntity.id to java.lang.String
Please find my code here
@Entity
@RevisionEntity(CustomEntityTrackingRevisionListener.class)
public class CustomTrackingRevisionEntity {
@Id
@GeneratedValue
@RevisionNumber
private int customId;
@RevisionTimestamp
private long customTimestamp;
@OneToMany(mappedBy="revision", cascade={CascadeType.PERSIST, CascadeType.REMOVE})
private Set<ModifiedEntityTypeEntity> modifiedEntityNames =
new HashSet<ModifiedEntityTypeEntity>();
public void addModifiedEntityType(String entityClassName) {
modifiedEntityNames.add(new ModifiedEntityTypeEntity(this, entityClassName));
}
//getter and setters
}
==============================================================================
public class CustomEntityTrackingRevisionListener
implements EntityTrackingRevisionListener {
@Override
public void entityChanged(Class entityClass, String entityName,
Serializable entityId, RevisionType revisionType,
Object revisionEntity)
{
String type = entityClass.getName();
CustomTrackingRevisionEntity customeEntity = (CustomTrackingRevisionEntity)revisionEntity;
customeEntity.addModifiedEntityType(type);
}
@Override
public void newRevision(Object revisionEntity) {
}
}
=============================================================
@Entity
public class ModifiedEntityTypeEntity {
@Id
private int id;
@ManyToOne
@JoinColumn(name="revision_customId", nullable=false)
private CustomTrackingRevisionEntity revision;
private String entityClassName;
public ModifiedEntityTypeEntity(CustomTrackingRevisionEntity revision , String entityClassName)
{
this.revision = revision;
this.entityClassName = entityClassName;
}
//getter and setters
}
I have tried to find out the solution but nothing worked. Kindly help me out. Thanks in advance