【发布时间】:2013-08-30 17:00:42
【问题描述】:
我有一个无法解决的问题。在休眠状态下,我对以下内容没有任何问题:
@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 是不可能的。
【问题讨论】:
-
如果你走另一个方向(让 EclipseLink 从你的实体生成 DDL)它会生成什么?
-
我编辑了原始帖子以添加对您问题的答案。
标签: hibernate jpa eclipselink