2016-07-26 10 views
1

私はアプリケーションでHibernate Enversを使用して、監査証跡データを格納しています。すべての監査関連情報が* _AUDテーブルに正しく格納されています。ただし、すべての_AUD表のrev列のデータ型はIntegerデータ型です。整数データ型の最大範囲が2147483647なので、大きなintデータ型が必要です。データ型をbig intに変更する方法はありますか?Hibernate Envers revカラムのデータ型がInteger

+0

この列はリビジョンに1つのタプルを使用していませんか?つまり、タプルは2147483647のリビジョンを持つことができます。これは十分である必要があります... – Ben

+0

番号1のシーケンス番号からすべてのAUDテーブルのリビジョン番号を取得します – kenn3th

答えて

1

デフォルトでは、Envers実装では、REV列にIntegerデータ型が使用されます。

Longデータ型を利用するには、適切な注釈を含むカスタムリビジョンエンティティを指定する必要があります。以下は、BIGINT互換REVカラムを使用している間に、既存のデフォルト実装を置き換える例です。

@Entity 
@RevisionEntity 
public class CustomRevisionEntity implements Serializable { 
    @Id 
    @GeneratedValue 
    @RevisionNumber 
    private Long rev; 
    @RevisionTimestamp 
    private Long timestamp; 
    /* provide getter/setters */ 
} 

注:すべての監査テーブルは、データ型のリビジョンのエンティティクラスで使用することをそのREV列のデータ型が一致するようになります。

代わりIntegerベースリビジョンのLongを使用するデフォルトの実装を移行するために、オープンJIRA HHH-6615があります。ただし、アップグレードパスを既存のユーザーを考慮してその問題の実装の詳細として検討する必要があります。

これまでは、カスタムリビジョンエンティティを新しい実装に使用することで回避することができます。

関連する問題