Я начинаю новый проект и собираюсь использовать postgresql вместо MySql (как обычно).Hibernate SequenceStyleGenerator игнорирует параметр initial_value
Итак, мое поле идентификатора AbstractEntity
класса настроено что-то вроде этого
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "dynamicIdGenerator")
@GenericGenerator(
name = "dynamicIdGenerator",
strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator" ,
parameters = {
@Parameter(name = "prefer_sequence_per_entity", value = "true"),
@Parameter(name = "sequence_per_entity_suffix", value = "_id_seq"),
@Parameter(name = "initial_value", value = "100"),
@Parameter(name = "increment_size", value = "1")
})
protected Long id;
Кроме того, я использую LiquiBase для создания таблицы базы данных, например:
<createTable tableName="audit_field_name">
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true"/>
</column> ...
</createTable>
Все нормально, я У меня есть таблица audit_field_name
и соответствующая последовательность audit_field_name_id_sec
, но эта последовательность имеет начальное значение по умолчанию: 1. ie config @Parameter(name = "initial_value", value = "100")
был проигнорирован, и у меня есть некоторые проблемы с этим.
Итак, кто-нибудь знает, как использовать SequenceStyleGenerator
и определить initial_value
param?
Что произойдет, если вы позволите Hibernate генерировать таблицы (и последовательность)? Возможно, Hiberanate больше не трогает вашу последовательность, если она уже существует, потому что Liquibase уже создала ее? – Jens
Ну, Liquibase - это наше архитектурное требование, поэтому я не могу позволить Hibernate генерировать таблицы. Но последовательность сгенерирована Hibernate, а не жидкостью –
Я хотел только позволить ей работать для теста. Мне было непонятно, что спящий режим создает последовательность, а не ликбазу. Я предполагаю, что это чистая проблема спящего режима. Не могу с этим поделать. Сожалею. – Jens