Unsere Java-App ist Spring-basiert und wir haben Domain-Klassen und das entsprechende Schema, das über Liquibase generiert wird.
Wir planen, Unterstützung für eine einzelne zu überprüfende Domäne hinzuzufügen.
a. Wir haben nicht hibernate.xml und hibernate.cfg.xml, stattdessen verwenden wir application-context.xml. Wie erstelle ich Audit-Tabelle durch Anmerkungen wie @Audited.
Wie löse ich dieses Problem? Ich habe die Hibernate-Konfiguration als
hinzugefügt %Vor%@Audited Annotation in meiner Domain-Klasse hinzugefügt
%Vor%Diese Konfiguration hat jedoch keine Überwachungstabellen in der Entwicklungsumgebung erstellt. Es ist nicht klar, welche zusätzliche Konfiguration ich hier vermisse.
b. Wie sollte ich das erforderliche envers-spezifische Schema mit Liquibase erstellen? Das Produktionsteam ist nicht damit einverstanden, das SQL-Schema automatisch auch in der Produktionsumgebung zu erzeugen.
Ich verwende in unserem Projekt Hibernate, Envers und Liquibase.
Die Lösung zum Hinzufügen von envers zu der Entität ExampleEntitity
mit der db-Tabelle exampleEntitity
(nur Tabelle, wenn es sich um eine einfache Entität handelt und wir keine Beziehungen prüfen):
Zuerst , fügen Sie zu liquibase <changeSet>
tags hinzu, zB:
id
, (...)
- & gt; Felder aus der Tabelle exampleEntity , die Sie überwachen möchten.
Zweite , fügen Sie @Audited
adnotation zu der Entität ExampleEntitity
hinzu (oder @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
, wenn Sie keine verwandten Entitäten auditieren möchten).
Das ist alles. Jetzt werden alle Änderungen der Instanzen ExampleEntitity
in der Tabelle exampleEntitity_AUD
gespeichert.
Tags und Links java hibernate spring hibernate-envers