我有一个无法解决的问题。在休眠状态下,我对以下内容没有任何问题:
@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.
所以我当然会四处搜索,如果初始值为 1 并且它应该等于 allocationSize,那么我会看到一些关于 EclipseLink 创建负数的信息。
所以,好吧,所以添加“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;
这意味着不可能使用 EclipseLink 创建具有“START WITH 1”的 DDL。