2016-07-26 40 views
1

我在我的應用程序中使用Hibernate Envers來存儲審計跟蹤數據,所有審計相關信息都正確存儲在* _AUD表中。但是,所有_AUD表中rev列的數據類型都是Integer數據類型。我期待一個大的int數據類型,因爲整數數據類型的最大範圍是2147483647.有沒有辦法將數據類型更改爲大的int?Hibernate Envers rev列數據類型爲Integer

+0

這個列不是用來修改單個元組嗎?意味着:一個元組可以有2147483647版本,這應該足夠了... – Ben

+0

編號Envers從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列的數據類型匹配的數據類型的您在修訂實體類使用。

有一個開放JIRA HHH-6615遷移默認的實現使用Long代替Integer基於修改;然而,它確實要求我們將升級路徑視爲該問題的實現細節以說明現有用戶。

在此之前,爲新實現使用自定義修訂實體是一種解決方法。

相關問題