2015-02-04 2 views
0

Я начинаю новый проект и собираюсь использовать 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?

+0

Что произойдет, если вы позволите Hibernate генерировать таблицы (и последовательность)? Возможно, Hiberanate больше не трогает вашу последовательность, если она уже существует, потому что Liquibase уже создала ее? – Jens

+0

Ну, Liquibase - это наше архитектурное требование, поэтому я не могу позволить Hibernate генерировать таблицы. Но последовательность сгенерирована Hibernate, а не жидкостью –

+0

Я хотел только позволить ей работать для теста. Мне было непонятно, что спящий режим создает последовательность, а не ликбазу. Я предполагаю, что это чистая проблема спящего режима. Не могу с этим поделать. Сожалею. – Jens

ответ

0

И, наконец, я нашел ошибку. Спящий режим не генерирует секвенцию (в моем случае) - ликбаза. И Liquibase создают последовательность с параметрами по умолчанию, поэтому единственный способ установить начальное значение - изменить последовательность

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