2016-07-26 6 views
1

Я использую Hibernate Envers в своем приложении для хранения данных аудита, вся информация, связанная с аудитом, хранится в таблице * _AUD правильно. Однако тип данных столбца rev во всей таблице _AUD является типом данных Integer. Я ожидаю большой тип данных int, потому что максимальный диапазон целочисленных типов данных равен 2147483647. Есть ли способ изменить тип данных на большой int?Hibernate Envers rev тип данных столбца Integer

+0

Разве этот столбец не используется для пересмотра одного кортежа? означает: кортеж может иметь 2147483647 ревизий, которого должно быть достаточно ... – Ben

+0

№. Обнуляет получает номер ревизии для всей таблицы AUD из 1 порядкового номера – kenn3th

ответ

1

По умолчанию реализация Envers использует тип данных Integer для столбца REV.

Для того, чтобы использовать тип данных Long, вам необходимо предоставить собственный объект ревизии с соответствующими аннотациями. Ниже приведен пример, который заменит существующую реализацию по умолчанию, используя столбец BIGINTREV.

@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 изменений на основе; однако для этого требуется, чтобы мы рассматривали пути обновления в качестве детали реализации этой проблемы для учета существующих пользователей.

До тех пор использование пользовательского объекта ревизии для новых реализаций является обходным путем.

Смежные вопросы