У меня проблема, с которой я не могу разобраться. В спящем режиме у меня нет проблем со следующим:
@GeneratedValue( strategy = GenerationType.AUTO, generator = "email-seq-gen" )
@SequenceGenerator( name="email-seq-gen", sequenceName="EMAIL_SEQ_GEN", allocationSize=500 )
Тогда в моей schema.ddl у меня есть это:
CREATE SEQUENCE EMAIL_SEQ_GEN START 1 INCREMENT 500;
Нечего здесь видеть. Все работает так, как ожидалось. Однако, если я переключу своего провайдера на EclipseLink, я получаю эту ошибку:
The sequence named [EMAIL_SEQ_GEN] is setup incorrectly. Its increment does not match its pre-allocation size.
Итак, конечно, я google и вижу что-то о EclipseLink, создающем отрицательное число, если начальное значение равно 1 и что оно должно равняться распределению.
Итак, хорошо, поэтому добавление "initialValue = 500" и обновление моих сценариев DDL до "START 500" исправляет это, но теперь моя нумерация начинается с 500 вместо 1. Что дает? Является ли это ошибкой EclipseLink или есть что-то, чего я не понимаю. Я хотел бы генерировать последовательности, начинающиеся с 1 и имеющие размеры размещения, которые настроены на объект (в данном случае 500). Как мне это сделать с EclipseLink?
Спасибо!
Еще один способ задать это.... учитывая этот DDL:
CREATE SEQUENCE EMAIL_SEQ_GEN START 1 INCREMENT 500;
Каков правильный способ аннотировать мой объект, чтобы использовать его с EclipseLink?
Если я позволю EclipseLink генерировать мой DDL, тогда это:
@GeneratedValue( strategy = GenerationType.AUTO, generator = "email-seq-gen" )
@SequenceGenerator( name="email-seq-gen", sequenceName="EMAIL_SEQ_GEN", initialValue=1, allocationSize=500 )
Сгенерирует это:
CREATE SEQUENCE EMAIL_SEQ_GEN INCREMENT BY 500 START WITH 500;
Какой тип подразумевает, что НЕВОЗМОЖНО создать DDL с "START WITH 1" с использованием EclipseLink.