Как заставить Hibernate генерировать последовательности с пользовательским приращением

Я использую Hibernate 4.3.8 с JPA 2.1 и автоматически генерируемые идентификаторы через последовательности:

  @Id
  @Column(name = "ID")
  @GeneratedValue(strategy = GenerationType.AUTO, generator = "t_gen")
  @SequenceGenerator(name = "t_gen", sequenceName = "T_SEQ", initialValue = 1, allocationSize = 50)
  private long id;

К сожалению, Hibernate генерирует для ORACLE следующий DDL:

create sequence T_SEQ;

Но мне нужно увеличить его на 50, см. Как заставить форсированные автоматически сгенерированные первичные ключи гибернации. Как мне этого добиться?

РЕДАКТИРОВАТЬ: мне нужно заставить Hibernate генерировать такую ​​последовательность с пользовательским автоинкрементом в его сгенерированном DDL.

3 ответа

sql>create sequence T_SEQ  
NOMAXvalue  
start with 1  
increment by 50  
nocache  
order; 

Мне кажется, что в настоящее время нет возможности сделать это. Это связано с этой ошибкой Hibernate https://hibernate.atlassian.net/browse/HHH-8008.

Вы должны создать последовательность в базе данных ORACLE:

sql> создать последовательность T_SEQ, увеличенную на 50;

и укажите это имя последовательности в @SequenceGenerator:

@SequenceGenerator (name = "t_gen", sequenceName = "T_SEQ")

Я надеюсь, что это будет работать нормально. Благодарю.

Другие вопросы по тегам