java - Hibernate @GenerateValue(策略 = GenerationType.AUTO)

标签 java hibernate

那么自动生成函数“@GenerateValue(strategy = GenerationType.AUTO)”到底是如何工作的呢?

我是 Hibernate 的新手,并且继承了一个广泛使用的项目。 java对象有:

@Id
@GeneratedValue(strategy = GenerationType.AUTO)    
@Column(name="ID")    
private Long id;

当我创建这种类型的新实体时,会生成 ID。后续新实体的 ID 会增加 2。这到底是在哪里完成的?

此外,它在我们的 DEV 和 TEST 环境中生成不同的 ID,因此它在某种程度上是特定于数据库的。是否有“馈送”表/ View /序列或其他东西?

例如,如果我希望生成的 ID 开始为 100,000,XXX(而不是 10,XXX)并增加 100,我将如何进行更改?

请帮帮菜鸟。提前致谢。

最佳答案

如前所述,这是由您的 Oracle 数据库控制的。如果 id 递增 2,那是因为有人将其设置为 2。 在oracle中,SET INCREMENT BY将指定标识列上的增量。

要更改种子值,请使用 RESTART WITH。

ALTER TABLE mytable ALTER COLUMN id SET INCREMENT BY 100    
ALTER TABLE mytable ALTER COLUMN id RESTART WITH 100000000

Oracle 更改表文档:Alter table

关于java - Hibernate @GenerateValue(策略 = GenerationType.AUTO),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20707768/

相关文章:

java - 如何在 android 中解决 StringIndexOutOfBoundsException

hibernate - 我在 grails 中遇到完整性违规异常。如何级联删除到grails中的相关实体?

java - hibernate 。一些相同列表的非空约束

java - 如何处理应用 BeanValidation 关系约束的错误?

java - 为什么我通过 hector 将 double/float 列插入 Cassandra 并得到错误的 int 数据库值

java - java中删除双向链表中的两个节点时出错

java - 如何添加持久媒体控件,如 Apollo 或 Google 音乐

java - 保存时 hibernate 一对一空外键

java - hibernate/jpa Autowire 注释产生 Nullpointer 异常错误

运行 hector 示例代码时出现 java.lang.ClassNotFoundException : org. apache.xbean.finder.archive.Archive 错误