如何强制Hibernate生成具有自定义增量的序列

时间:2015-04-14 09:27:16

标签: oracle hibernate jpa ddl

我正在使用带有JPA 2.1的Hibernate 4.3.8和通过以下顺序自动生成ID:

  @Id
  @Column(name = "ID")
  @GeneratedValue(strategy = GenerationType.AUTO, generator = "t_gen")
  @SequenceGenerator(name = "t_gen", sequenceName = "T_SEQ", initialValue = 1, allocationSize = 50)
  private long id;

不幸的是,Hibernate为ORACLE生成了以下DDL:

create sequence T_SEQ;

但我需要增加50,见How can I force positive auto generated hibernate primary keys。我怎样才能做到这一点?

编辑: 我需要强制Hibernate生成这样的序列,并在其生成的DDL中使用自定义自动增量。

3 个答案:

答案 0 :(得分:0)

您必须在ORACLE数据库中创建序列:

<强> SQL&GT;创建序列T_SEQ递增50;

并在@SequenceGenerator中指定序列名称:

@SequenceGenerator(name =&#34; t_gen&#34;,sequenceName =&#34; T_SEQ&#34;)

我希望它能正常运作。 感谢。

答案 1 :(得分:0)

sql>create sequence T_SEQ  
NOMAXvalue  
start with 1  
increment by 50  
nocache  
order; 

答案 2 :(得分:0)

在我看来,目前没有可能做到这一点。它与此Hibernate错误https://hibernate.atlassian.net/browse/HHH-8008有关。