Я использую Hibernate Envers в своем приложении для хранения данных аудита, вся информация, связанная с аудитом, хранится в таблице * _AUD правильно. Однако тип данных столбца rev во всей таблице _AUD является типом данных Integer. Я ожидаю большой тип данных int, потому что максимальный диапазон целочисленных типов данных равен 2147483647. Есть ли способ изменить тип данных на большой int?Hibernate Envers rev тип данных столбца Integer
ответ
По умолчанию реализация Envers использует тип данных Integer
для столбца REV
.
Для того, чтобы использовать тип данных 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
изменений на основе; однако для этого требуется, чтобы мы рассматривали пути обновления в качестве детали реализации этой проблемы для учета существующих пользователей.
До тех пор использование пользовательского объекта ревизии для новых реализаций является обходным путем.
Разве этот столбец не используется для пересмотра одного кортежа? означает: кортеж может иметь 2147483647 ревизий, которого должно быть достаточно ... – Ben
№. Обнуляет получает номер ревизии для всей таблицы AUD из 1 порядкового номера – kenn3th