Ich verwende Hibernate Envers in meiner Anwendung, um Audit-Trail-Daten zu speichern, alle Audit-bezogenen Informationen werden in * _AUD-Tabelle korrekt gespeichert. Der Datentyp der rev-Spalte in der Tabelle _AUD ist jedoch der Datentyp Integer. Ich erwarte einen großen int-Datentyp, da der maximale Bereich des Ganzzahl-Datentyps 2147483647 ist. Gibt es eine Möglichkeit, den Datentyp in Big Int zu ändern?Hibernate Envers rev Spalte Datentyp ist Integer
Antwort
Standardmäßig verwendet die Envers-Implementierung einen Integer
-Datentyp für die Spalte REV
.
Um den Datentyp zu nutzen, müssen Sie eine benutzerdefinierte Revisionsentität mit den entsprechenden Anmerkungen bereitstellen. Unten ist ein Beispiel, das die vorhandene Standardimplementierung ersetzt, während eine BIGINT
kompatible REV
Spalte verwendet wird.
@Entity
@RevisionEntity
public class CustomRevisionEntity implements Serializable {
@Id
@GeneratedValue
@RevisionNumber
private Long rev;
@RevisionTimestamp
private Long timestamp;
/* provide getter/setters */
}
HINWEIS: Alle Audit-Tabellen werden ihre REV
Spalte Datentyp übereinstimmen, dass der Datentyp, den Sie in der Revisions Entitätsklasse verwenden.
Es gibt eine offene JIRA HHH-6615 die Standardimplementierungen zu migrieren Long
statt Integer
basierten Versionen zu verwenden; Es ist jedoch erforderlich, Upgradepfade als Implementierungsdetails dieses Problems zu betrachten, um bestehende Benutzer zu berücksichtigen.
Bis dahin ist die Verwendung einer benutzerdefinierten Revisionsentität für neue Implementierungen eine Problemumgehung.
Wird diese Spalte nicht für die Revision eines einzelnen Tupels verwendet? bedeutet: ein Tupel kann 2147483647 Revisionen haben, was genug sein sollte ... – Ben
Nein Envers erhalten die Revisionsnummer für alle AUD-Tabelle von 1 Sequenznummer – kenn3th