2017-02-23 3 views
0

Mein Projekt migriert von Grails nach Java, so dass ich Audit-Daten in einer einzelnen Tabelle durch Grails Audit plugin habe, jetzt benutze ich Java Envers für Auditing in Java. Ich habe unter Zweifel:Erzeuge den Hibernate Envers Primärschlüssel manuell und jpa sowie

-> Wenn ich Daten aus einer einzelnen Tabelle zu verschiedenen Audit-Tabellen (in Java) manuell schieben möchte, wie kann ich Primärschlüssel der Revisionstabelle für historische Daten manuell generieren, die nicht mit Primärschlüssel kollidieren aus Java Annotation generiert? Wie für neue Einträge I wie unten Primärschlüssel bin zu erzeugen:

@Id 
    @GeneratedValue 
    @RevisionNumber 
    @Column(name = "ID") @NotNull 
    private Long revisionId; 

-> Eine andere Möglichkeit, Daten aus einzelner Audit-Tabelle auf getrennte Audit-Tabellen (in Java) zu schieben, anstatt sie manuell zu tun?

Bitte lassen Sie mich darüber wissen.

Danke.

+0

Welchen Dialekt verwenden Sie? – Naros

+0

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.Oracle10gDialect – Khushi

Antwort

0

Envers sollte die Sequenz REVISION_LISTENER auf Oracle erstellen.

Daher sollten Sie in der Lage sein, die Oracle-Syntax SELECT REVISION_LISTENER.NEXTVAL verwenden, um die nächste Sequenz Wert zu erhalten und zu verwenden, die in der REV Feld sowohl in Ihrem Audit-Tabelle und die Info-Revision Einheit Tabelle zu.

Dies gilt nur für DefaultAuditStrategy.

Wenn Sie die ValidityAuditStrategy verwenden möchten, gibt es noch andere Felder, in denen Sie die Interna von Envers verstehen müssen, um die relevanten Felder ausfüllen zu können. Wenn Sie diese Strategie verwenden, lassen Sie es mich wissen, und ich werde weitere Details hinzufügen, die spezifisch dafür sind, aber es ist sehr komplex und ziemlich mühsam.

+0

Vielen Dank Naros..Ich habe keine Überwachungsstrategie definiert, so dass ich Ihre Lösung verwenden kann, ich werde überprüfen und Ihnen die Ergebnisse mitteilen .. – Khushi

Verwandte Themen