2016-07-26 16 views
1

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

+0

Wird diese Spalte nicht für die Revision eines einzelnen Tupels verwendet? bedeutet: ein Tupel kann 2147483647 Revisionen haben, was genug sein sollte ... – Ben

+0

Nein Envers erhalten die Revisionsnummer für alle AUD-Tabelle von 1 Sequenznummer – kenn3th

Antwort

1

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.