我有一个问题,我无法得到我的头。在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
我编辑了原始文章以添加问题的答案。 –