Single Revision for Multiple Schemas
sebp Jul 12, 2011 9:15 AMI have a database with multiple schemas and I want to have a single, global revision. Therefore I defined the revision entity as follows:
@Entity(name = "Revision")
@Table(name = "revision", schema = "space")
@SequenceGenerator(name = "RevisionSequence", sequenceName = "space.seq_revision", initialValue = 1, allocationSize = 1)
@RevisionEntity(UserRevisionListener.class)
public class AuditRevisionEntity implements Serializable, BasicRevisionEntity {
private static final long serialVersionUID = 1L;
private Long id;
private long timestamp;
private String userName;
@Override
@RevisionNumber
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "RevisionSequence")
@Column(name = "id")
public Long getId() {
return this.id;
}
...
}
This revisionn entity is used by all persistence units, e.g.:
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="PatientManagementChimerism"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>java:PatientManagementDS</jta-data-source> <class>com.qualitype.audit.entity.AuditRevisionEntity</class> .... </persistence-unit> </persistence>
It works fine. I have a global revision entity and I can do nice horizontal audits from one schema to another. But I'm not sure if this is the right way to do it, since I didn't find any envers tutorial that explains how to use global revisions on multiple schemas. Also, as you can see, the revision name contains the schema of the revision table (sequenceName = "space.seq_revision"). Hibernate seems to accept that even if this is not part of the JPA spec. My question is: Is this the right way to do it (are there alternatives)?