我有一個問題,我無法得到我的頭。在Hibernate中我有以下沒有問題:EclipseLink和序列生成器預分配
@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.
所以我當然是谷歌四周,看到一些有關的EclipseLink創建一個負數,如果初始值是1,它應該等於allocationSize。
所以,好吧,所以添加「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。
如果你走另一個方向(讓EclipseLink從你的實體生成DDL),它會產生什麼? – DannyMo
我編輯了原始文章以添加問題的答案。 –