Как заставить 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")
Я надеюсь, что это будет работать нормально. Благодарю.