2014-02-12 61 views
0

我正在尝试使用hibernate生成的值策略在我的表中添加序列号。我的表格列中已经有数字1和2,现在我想从3开始编号。休眠中的生成值策略

我应该使用哪种类型来满足此要求?我可以这样做吗?或者在所有情况下休眠只会从数字0开始?

@GeneratedValue (strategy = GenerationType.TABLE) 
public void setId(int id) { 
    this.id = id; 
} 

回答

1

如果使用TABLE策略,它将以表中存储的当前值开始,用于生成对应于实体的ID。

如果使用SEQUENCE策略,它将从序列的当前值开始。

如果使用IDENTITY策略,它将询问数据库的下一个ID(该列应该自动增加),并且数据库不应返回已使用的ID。

+0

你是说通过使用序列策略,休眠会根据当前值分配的主键生成下一个数字? – Zeus

+0

所以如果我使用表格,那么它会考虑我的最大身份证号码?并添加下一个数字,当我在同一个表中插入一行? –

+0

@Zeus:没有。我说它使用序列来生成ID,并且序列的当前值驱动下一个ID将会是什么,而不是该表的最大ID。 –