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)?